hi,
ich benutze in meinen Programmen ungern externe Komponenten, außer es gibt einen guten Grund dafür. nun, ein tray icon ist kein grund für mich eine externe komponente zu nutzen. Also hab ich mir mit hilfe des freundes google und der
MSDN das hier zusammengefrickelt:#
Delphi-Quellcode:
TTrayIcon = class (TObject)
public
class procedure OnMessage (var Msg: TMessage);
end;
Delphi-Quellcode:
Fillchar(NotifyIconData,Sizeof(NotifyIconData),0);
NotifyIconData.cbSize := Sizeof(NotifyIconData);
NotifyIconData.Wnd := AllocatehWnd(TTrayIcon.OnMessage);
NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
NotifyIconData.uCallbackMessage := WM_TASKABAREVENT;
NotifyIconData.hIcon := Application.Icon.Handle;
StrPLCopy(NotifyIconData.szTip, PChar ('FLAP ' + Version), SizeOf(NotifyIconData.szTip) - 1);
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
Application.OnMinimize := Form1.OnMinimize;
Funktioniert wunderbar und so wie es soll.
Im OnClose event habe ich das hier noch drin:
TrayIcon.Free;
Nur wird das TrayIcon weiterhin auch nach schließen weiterhin angezeigt. Was hab ich da übersehen? THX
MfG