unit Form_Main;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ActiveX, ComObj, ShlObj,
ShLwApi;
type
TFormMain = class(TForm, IQueryContinue, IUserNotificationCallback)
Button1: TButton;
CheckBox1: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
I: IUserNotification2;
public
function QueryContinue: HRESULT; stdcall;
function OnBalloonUserClick(const pt: TPoint): HRESULT; stdcall;
function OnLeftClick(const pt: TPoint): HRESULT; stdcall;
function OnContextMenu(const pt: TPoint): HRESULT; stdcall;
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
procedure TFormMain.Button1Click(Sender: TObject);
begin
I.SetIconInfo(Application.Icon.Handle, 'IUserNotification2演示');
I.SetBalloonInfo('提示标题', '这是提示内容', 3);
I.SetBalloonRetry(1000, 5000, 3);
I.Show(self as IQueryContinue, 1000, self as IUserNotificationCallback);
end;
procedure TFormMain.FormCreate(Sender: TObject);
begin
I := CreateComObject(CLSID_UserNotification) as IUserNotification2;
end;
procedure TFormMain.FormDestroy(Sender: TObject);
begin
I := nil;
end;
function TFormMain.OnBalloonUserClick(const pt: TPoint): HRESULT;
begin
ShowMessage('Balloon User Click!');
end;
function TFormMain.OnContextMenu(const pt: TPoint): HRESULT;
begin
ShowMessage('On Context Menu');
end;
function TFormMain.OnLeftClick(const pt: TPoint): HRESULT;
begin
ShowMessage('Left Click!');
end;
function TFormMain.QueryContinue: HRESULT;
begin
if CheckBox1.Checked then
Result := S_OK
else
Result := S_FALSE;
end;
end.