Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TNA Icon von abgeschossener Anwendung entfernen/bereinigen (https://www.delphipraxis.net/109160-tna-icon-von-abgeschossener-anwendung-entfernen-bereinigen.html)

SlaterBenelli 25. Feb 2008 14:01


TNA Icon von abgeschossener Anwendung entfernen/bereinigen
 
Hallo Forum,

leider habe ich hier und bei Google noch nichts passendes gefunden.

Gibt es eine Möglichkeit die Icons aus der TNA zu entfernen von den "fremden" Programmen die man abgeschossen hat?

In welcher Richtung kann man da suchen, stehe gerade wie der Ochs vorm Berg...


Gruß

Christian

Muetze1 25. Feb 2008 14:08

Re: TNA Icon von abgeschossener Anwendung entfernen/bereinig
 
Wenn du manuell meinst: einfach mit der Maus über das Icon fahren, dann haut Windows dies weg.

SlaterBenelli 25. Feb 2008 14:37

Re: TNA Icon von abgeschossener Anwendung entfernen/bereinig
 
Zitat:

Zitat von Muetze1
Wenn du manuell meinst: einfach mit der Maus über das Icon fahren, dann haut Windows dies weg.

:wink:

Das weis ich auch, habe einen (sagen wir mal) BOT geschrieben, der in bestimmten Situationen eines der Programme abschießst (WM_Close lässt Bot und Anwendung einfrieren) und da das ganze auf einem Server läuft schaut da auch kaum jemand. OK, hier geht es jetzt zwar mehr um Kosmetik, aber ich hoffe das es dazu doch was gibt im Sinne von Bereinigung/Neu Aufbauen oder so...

Bis dann

Christian

ptown67 25. Feb 2008 15:08

Re: TNA Icon von abgeschossener Anwendung entfernen/bereinig
 
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ß ;)

Muetze1 25. Feb 2008 15:26

Re: TNA Icon von abgeschossener Anwendung entfernen/bereinig
 
Zitat:

Zitat von ptown67
ich konnte das beheben, indem ich beim ereignis 'onDestroy' dann die procedure 'TaskBarRemoveIcon' gesetzt habe, welche ebenfalls aus dem oben genannten beispiel stammt.

Hmm, und wie willst du dies in das fremde Programm reinbekommen? Er will das Icon eines fremden Programms nach dem Abschuss des fremden Programms entfernen.

SlaterBenelli 25. Feb 2008 15:46

Re: TNA Icon von abgeschossener Anwendung entfernen/bereinig
 
Zitat:

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...


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz