아래 코드를 사용하고 있습니다. 응용 프로그램을 숨기고 싶지만 시스템에서 시도해보십시오 (작동). 그런 다음 왼쪽 마우스를 클릭하여 주 폼을 표시하려고하면 아무 일도 일어나지 않습니다. 도와 주실 래요? 나는 모든 코드를 포함시켰다.Delphi - 응용 프로그램을 열 수없는 시스템 트레이 아이콘
기본 폼 코드 :
unit Main_Unit;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,shellApi,AppEvnts;
type
TMain = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
TrayIconData: TNotifyIconData;
procedure TrayMessage(var Msg: TMessage);
{ Private declarations }
public
{ Public declarations }
end;
var
Main: TMain;
const
WM_ICONTRAY = WM_USER + 1;
implementation
{$R *.dfm}
uses Functions;
procedure TMain.TrayMessage(var Msg: TMessage);
begin
case Msg.lParam of
WM_LBUTTONDOWN:
begin
ShowMessage('Left button clicked - let''s SHOW the Form!');
Main.Show;
end;
WM_RBUTTONDOWN:
begin
ShowMessage('Right button clicked - let''s HIDE the Form!');
Main.Hide;
end;
end;
end;
procedure TMain.FormCreate(Sender: TObject);
begin
with TrayIconData do
begin
cbSize := SizeOf();
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := WM_ICONTRAY;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end;
Shell_NotifyIcon(NIM_ADD, @TrayIconData);
end;
procedure TMain.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
end;
end.
초기화 코드 :
program Test;
uses
Vcl.Forms,
Main_Unit in 'Main_Unit.pas' {Main},
Functions in 'Functions.pas';
{$R *.res}
begin
Application.Initialize;
Application.ShowMainForm := False;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMain, Main);
Application.Run;
end.
당신은 메시지 핸들러를 정의하지만 메시지 ID에 연결하지 않은 당신에게
그래서 오른쪽 버튼을 누르면 기본 창이 숨겨 지지만 왼쪽 버튼을 누르면 해당 창을 다시 표시하지 않는다는 말입니까? –
@RobKennedy 2 가지 기능 중 하나를 실행할 수 없습니다. 나는 아이콘을 클릭하지만 아무 일도 일어나지 않는다. – user2952034
@Davidheffernan 지금 전체 코드를 게시 할 예정입니다. 초기화 코드와 기본 폼 코드 모두 – user2952034