Delphi System Tray Application,版本高于D7时设置Application.ShowMainForm := False;在隐藏的时候,任务栏不显示。


unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellAPI, AppEvnts;
const
WM_ICONTRAY = WM_USER + 100 ;
type
TForm1 = class (TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
TrayIconData: TNotifyIConData;
public
{ Public declarations }
procedure TrayMessage( var aMsg:TMessage); message WM_ICONTRAY;
end ;
var
Form1: TForm1;
implementation
{ $R *.dfm }
procedure TForm1.FormCreate(Sender: TObject);
begin
with TrayIconData do
begin
cbSize : = SizeOf(TrayIconData);
wnd : = Self.Handle;
uID : = 0 ;
uFlags : = NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage : = WM_ICONTRAY;
hIcon : = Application.Icon.Handle; // LoadIcon(HInstance, ' newIcon ' ); 加载自己的Icon
StrPCopy(szTip,Application.Title);
end ;
Shell_NotifyIcon(NIM_ADD,@TrayIconData);
end ;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE,@TrayICONData);
end ;
procedure TForm1.TrayMessage( var aMsg: TMessage);
begin
case aMsg.LParam of
WM_LBUTTONDOWN:
begin
ShowMessage( ' Left button clicked - let''s SHOW the Form! ' );
Application.MainForm.Show;
end ;
WM_RBUTTONDOWN:
begin
ShowMessage( ' Right button clicked - let''s HIDE the Form! ' );
Application.MainForm.Hide;
end ;
end ;
end ;
end .
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellAPI, AppEvnts;
const
WM_ICONTRAY = WM_USER + 100 ;
type
TForm1 = class (TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
TrayIconData: TNotifyIConData;
public
{ Public declarations }
procedure TrayMessage( var aMsg:TMessage); message WM_ICONTRAY;
end ;
var
Form1: TForm1;
implementation
{ $R *.dfm }
procedure TForm1.FormCreate(Sender: TObject);
begin
with TrayIconData do
begin
cbSize : = SizeOf(TrayIconData);
wnd : = Self.Handle;
uID : = 0 ;
uFlags : = NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage : = WM_ICONTRAY;
hIcon : = Application.Icon.Handle; // LoadIcon(HInstance, ' newIcon ' ); 加载自己的Icon
StrPCopy(szTip,Application.Title);
end ;
Shell_NotifyIcon(NIM_ADD,@TrayIconData);
end ;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE,@TrayICONData);
end ;
procedure TForm1.TrayMessage( var aMsg: TMessage);
begin
case aMsg.LParam of
WM_LBUTTONDOWN:
begin
ShowMessage( ' Left button clicked - let''s SHOW the Form! ' );
Application.MainForm.Show;
end ;
WM_RBUTTONDOWN:
begin
ShowMessage( ' Right button clicked - let''s HIDE the Form! ' );
Application.MainForm.Hide;
end ;
end ;
end ;
end .