const
WM_TRAYMSG = WM_USER + 10;
szClassname = '
TaskbarIcon-Demo';
var
Form1: TForm1;
dll : DWORD = 0;
ver : TDllVersionInfo;
shell32_ver : dword = 400;
// Standardversion 4.0 der "shell32.dll"
var
NID : TNotifyIconData = (
uID : 1052002;
uFlags : NIF_MESSAGE
or NIF_ICON
or NIF_TIP;
uCallbackMessage : WM_TRAYMSG;
hIcon : 0;
szTip : szClassname;
);
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
dll := LoadLibrary('
shell32.dll');
if(
dll <> 0)
then
begin
DllGetVersion := GetProcAddress(
dll,'
DllGetVersion');
if(@DllGetVersion <>
nil)
then
begin
fillchar(ver,sizeof(TDllVersionInfo),0);
ver.cbSize := sizeof(TDllVersionInfo);
if(DllGetVersion(@ver) = NOERROR)
then
shell32_ver := (ver.dwMajorVersion * 100) + ver.dwMinorVersion;
end;
FreeLibrary(
dll);
end;
// abhängig von der "shell32.dll" die Strukturgröße setzen!
if(shell32_ver = 600)
then NID.cbSize := sizeof(TNotifyIconData)
else if(shell32_ver >= 500)
then NID.cbSize := NOTIFYICONDATA_V2_SIZE
else NID.cbSize := NOTIFYICONDATA_V1_SIZE;
NID.wnd := form1.Handle;
NID.hIcon := LoadIcon(0,IDI_INFORMATION);
if(shell32_ver >= 500)
then
begin
NID.uFlags := NID.uFlags
or NIF_INFO;
NID.szInfo := '
Ein Beispiel für einen neuen Balloon-Tipp,' +
#13#10 + '
der auch mehrzeilig sein kann.';
NID.szInfoTitle := szClassname;
NID.dwInfoFlags := NIIF_INFO;
end;
Shell_NotifyIcon(NIM_ADD,@NID);
DestroyIcon(NID.hIcon);
end;