Zitat von
ptown67:
servus!
ich habe auch ein programm geschrieben, dass im SystemTray angezeigt wird (wenn minimiert). ich bin dabei nach diesem beispiel gegangen:
http://www.delphi-treff.de/tipps/applikation/tipp/32/
jedoch musste ich feststellen, dass das trayicon auch nach programmende bleibt.
ich konnte das beheben, indem ich beim ereignis 'onDestroy' dann die procedure 'TaskBarRemoveIcon' gesetzt habe, welche ebenfalls aus dem oben genannten beispiel stammt.
ich hoffe das hilft dir weiter. bin kein delphi-experte
gruß
Hi
Dank Dir!!!
habe es jetzt so geschafft:
Delphi-Quellcode:
procedure RemoveCMSIcon;
var
tnid: TNotifyIconData;
Owner,wnd: HWnd;
begin
wnd := FindWindow('ThunderRT6FormDC', '!!!!NAMEVONDEMFENSTERWASABGESCHOSSENWIRD!!!!');
if wnd <> 0 then
Begin
tnid.cbSize := SizeOf(TNotifyIconData);
tnid.Wnd := wnd;
tnid.uID := 1;
Shell_NotifyIcon(NIM_DELETE, @tnid);
Owner:=GetWindow(wnd,GW_OWNER);
If Owner<>0 Then Begin
ShowWindow(Owner,SW_Show);
ShowWindow(Owner,SW_Normal);
End;
End;
end;
Original aus dem Beispiel war:
Delphi-Quellcode:
procedure TaskBarRemoveIcon;
var
tnid: TNotifyIconData;
Owner: HWnd;
begin
tnid.cbSize := SizeOf(TNotifyIconData);
tnid.Wnd := Form1.Handle;
tnid.uID := 1;
Shell_NotifyIcon(NIM_DELETE, @tnid);
Owner:=GetWindow(Form1.Handle,GW_OWNER);
If Owner<>0 Then Begin
ShowWindow(Owner,SW_Show);
ShowWindow(Owner,SW_Normal);
End;
end;
Das Klappt so super...
Danke für die Anregung/Tipp!!!
Edit:
Zur Erklärung, bevor die Anwendung abgeschossen wird, muss das
Handle vom entsprechenden Fenster rausgefunden werden und dann erst das
TNA-Icon killen und dann die eigentliche Anwendung...