📄 unit2.~pas
字号:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI, ExtCtrls;
const
WM_PAOSERVICEMESSAGE=WM_USER+1234;
type
TPaoServForm = class(TForm)
btnOK: TButton;
Timer1: TTimer;
procedure btnOKClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
protected
IconData: TNotifyIconData;
procedure AddPaoServiceIcon();
procedure DelPaoServiceIcon();
procedure PaoServiceMessage(var Msg: TMessage); message WM_PAOSERVICEMESSAGE;
procedure PaoQueryEndSession(var Msg: TMessage); message WM_QUERYENDSESSION;
public
{ Public declarations }
end;
var
PaoServForm: TPaoServForm;
gbCanClose: Boolean;
implementation
{$R *.dfm}
procedure TPaoServForm.AddPaoServiceIcon();
begin
// ShowMessage('AddPaoServiceIcon');
ZeroMemory(@IconData, SizeOf(TNotifyIconData));
IconData.cbSize := SizeOf(TNotifyIconData);
IconData.Wnd := Handle;
IconData.uID := 1;
IconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
IconData.uCallbackMessage := WM_PAOSERVICEMESSAGE;
IconData.hIcon := Self.Icon.Handle;
IconData.szTip := 'RaynorPao''s Service (Demo)';
if Shell_NotifyIcon(NIM_ADD, @IconData) then
begin
Timer1.Enabled := false;
end;
end;
procedure TPaoServForm.DelPaoServiceIcon();
begin
// ShowMessage('DelPaoServiceIcon');
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
procedure TPaoServForm.PaoServiceMessage(var Msg: TMessage);
begin
if (Msg.LParam = WM_LBUTTONDBLCLK) then
begin
Show();
end;
end;
procedure TPaoServForm.PaoQueryEndSession(var Msg: TMessage);
begin
Msg.Result := 1;
gbCanClose := true;
Close;
end;
procedure TPaoServForm.btnOKClick(Sender: TObject);
begin
Close;
end;
procedure TPaoServForm.Timer1Timer(Sender: TObject);
begin
AddPaoServiceIcon;
end;
procedure TPaoServForm.FormCreate(Sender: TObject);
begin
// ShowMessage('FormCreate');
Timer1.Interval := 1000;
Timer1.Enabled := true;
gbCanClose := false;
end;
procedure TPaoServForm.FormDestroy(Sender: TObject);
begin
// ShowMessage('FormDestroy');
Timer1.Enabled := false;
end;
procedure TPaoServForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose := gbCanClose;
if not CanClose then
begin
Hide;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -