UnitForm_main;Interfaceuseswinapi.windows, Winapi.messages, System.sysutils, System.variants, system.classes, Vcl.graphics, Vcl.Controls, Vc L.forms, Vcl.dialogs, Vcl.stdctrls, ActiveX, Comobj, Shlobj, Shlwapi;typeTformmain=class(Tform, Iquerycontinue, Iusernotificationcallback) Button1:tbutton; Checkbox1:tcheckbox; procedureButton1Click (Sender:tobject); procedureformcreate (Sender:tobject); procedureFormdestroy (Sender:tobject); PrivateI:iusernotification2; Public functionQuerycontinue:hresult;stdcall; functionOnballoonuserclick (ConstPt:tpoint): HRESULT;stdcall; functionOnleftclick (ConstPt:tpoint): HRESULT;stdcall; functionOnContextMenu (ConstPt:tpoint): HRESULT;stdcall; End;varFormmain:tformmain;Implementation{$R *.DFM}procedureTformmain.button1click (sender:tobject);begin I.seticoninfo (Application.Icon.Handle, " iusernotification2 demo " " hint title ", " This is the hint ", 3 ); I.setballoonretry ( 1000 , 5000 , Span style= "COLOR: #800080" >3 ); I.show (self as iquerycontinue, 1000 , self as Iusernotificationcallback); End;proceduretformmain.formcreate (sender:tobject);begin I:= Createcomobject (clsid_usernotification) as IUserNotification2; End;procedureTformmain.formdestroy (sender:tobject);begin I:= nil; End;functionTformmain.onballoonuserclick (Constpt:tpoint): HRESULT;beginShowMessage ('Balloon User click!');End;functionTformmain.oncontextmenu (Constpt:tpoint): HRESULT;beginShowMessage ('On Context Menu');End;functionTformmain.onleftclick (Constpt:tpoint): HRESULT;beginShowMessage ('Left click!');End;functionTFormMain.QueryContinue:HRESULT;begin ifCheckbox1.checked ThenResult:=S_OKElseResult:=S_FALSE;End;End.
Delphi implements user-defined notifications (users Notification)