Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Explorerabsturz => TNA-Icons verschwunden (https://www.delphipraxis.net/27793-explorerabsturz-%3D-tna-icons-verschwunden.html)

Nogge 15. Aug 2004 19:20


Explorerabsturz => TNA-Icons verschwunden
 
hallo community,
ihr kennt das problem best genauso gut wie ich: wenn mal wieder der explorer bei winXP den geist aufgibt, wird kurzerhand dieser resetten und die meisten TNA-Icons sind aus der taskleiste verschwunden. allerdings gibt es progs, wie zb zonealarm oder antivir, die einen explorerabsturz erkennen und daraufhin sofort ihr icon in die TNA neuerstellen. dies möchte ich gern in mein prog einbezeihen, jedoch fehlt mir das wissen dazu und im forum gab es bisher noch keinen beitrag dazu.
plz help me^^

ripper8472 15. Aug 2004 20:02

Re: Explorerabsturz => TNA-Icons verschwunden
 
bei win98 und 2000 ist es auch so
ich glaub, die icons, die verschwinden, sind statische.
dagegen bleiben die icons von der firewall, antivirus usw. drin, weil die durch die jeweiligen programme in regelmäßigen abständen aktualisiert werden (werden als statusanzeige missbraucht).

versuch doch einfach, dein icon in sekundenabständen zu bearbeiten/aktualisieren und schieße dann zum test mal den explorer ab. vielleicht funktioniert es ja

gruß

w3seek 15. Aug 2004 20:22

Re: Explorerabsturz => TNA-Icons verschwunden
 
Der Explorer versendet eine spezielle message an registrierte fenster beim start, auf diese weise fuegen diese Programme ihre TNA icons wieder hinzu.

Stichworte: TaskbarCreated RegisterWindowMessage

Nogge 8. Nov 2004 20:57

Re: Explorerabsturz => TNA-Icons verschwunden
 
Ich hatte es auch schon mit Abfangen von einer best Messages versucht, jedoch wusste ich nie die genau ID dieser Explorermessage ;_; Kannst du mir nicht vllt mehr als nur dieses eine Stichwort zu diesem Thema schreiben bzw. mir einen Link geben? wäre sehr nett...habe nämlich nichts bei delphi-praxis gefunden ;_;

Vielen Dank ;P

alcaeus 8. Nov 2004 21:01

Re: Explorerabsturz => TNA-Icons verschwunden
 
Hi Nogge,

ganz gut hast du dann doch nicht gesucht: Tutorial: Wie verwende ich das CoolTrayicon.
Die Komponente stellt das Icon automatisch wieder her falls explorer.exe crasht.

Greetz
alcaeus

Nogge 8. Nov 2004 21:12

Re: Explorerabsturz => TNA-Icons verschwunden
 
ich hatte dieses tut bereits gefunden, jedoch schien es nicht zu meinem thema zu passen (meiner meinung nach^^). naja, seis drum...viiiiiiiiiiiielen dank

SirThornberry 8. Nov 2004 21:37

Re: Explorerabsturz => TNA-Icons verschwunden
 
da ich bestimmt nicht der einzige bin der CoolTray NICHT verwendet würde noch die genaue Message interessieren welche ausgelöst wird.

Muetze1 18. Nov 2004 13:09

Re: Explorerabsturz => TNA-Icons verschwunden
 
Moin!

Mein kleines Beispiel Programm macht dies auch und um auf die genaue Antwort einzugehen:

1. Mit RegisterWindowMessage() kann man sich die genaue Message ID holen, die der Explorer einem zuschickt. Dadurch, dass diese unterschiedlich ist, kann man keine Botschaft-Behandlungsroutine schreiben, da die Message ID nicht konstant ist. Auf Grund dessen, muss man...
2. ... auf die WndProc() zurück greifen und dort die Message abfangen und drauf reagieren.

Im Form Create die Message ID besorgen und in einer Variablen sichern:
Delphi-Quellcode:
  fTaskBarNewReg := RegisterWindowMessage('TaskbarCreated');
Und dann in der überschriebenen WndProc() einfach auf die Message reagieren:
Delphi-Quellcode:
Procedure TForm1.WndProc(var Message: TMessage);
Begin
  If ( Message.Msg = fTaskBarNewReg ) Then
  Begin
      // folgender Code ist zwar spezifisch zu dem oben verlinkten Beispielprojekt, aber im allgemeinen dann hier
      // das Try Icon neu registrieren...
    fIconAdded := False;
    TaskBarAddIcon;
  End;

  Inherited WndProc(Message);
End;
MfG
Muetze1

Nogge 10. Dez 2004 22:49

Re: Explorerabsturz => TNA-Icons verschwunden
 
hab mir dein prog mal angeguckt und auch fast alles nachvollziehen können. habe nur 2 fragen: ;-)
- was ist Tform1.doCreate bzw. doClose ?
- sind die proceduren gleichbedeutend mit "procedure TForm1.FormCreate(Sender: TObject);" ?

dann werde ich gleich mal cooltrayicon aus delphi entfernen...thx

Nogge 30. Jan 2005 10:00

Re: Explorerabsturz => TNA-Icons verschwunden
 
Hallo Community,
Hat jemand den Tipp von Muetze1 einmal ausprobiert? Ich hatte jetzt schon mehrere Explorerabstürze, aber das Icon wurde nicht hinzugefügt ;_;
Muss die Message bei RegisterWindowMessage wirklich 'TaskbarCreated' heißen oder soll ich dort eine eigene ID-Nummer erstellen (Strg+Shift+G)?

mfg Nogge

Christian Seehase 30. Jan 2005 10:48

Re: Explorerabsturz => TNA-Icons verschwunden
 
Moin Nogge,

zur Sicherheit solltest Du einen Wert mit [STRG]-[SHIFT]-[G] erzeugen.

toms 30. Jan 2005 10:55

Re: Explorerabsturz => TNA-Icons verschwunden
 
Zitat:

Zitat von Nogge
Muss die Message bei RegisterWindowMessage wirklich 'TaskbarCreated' heißen

Ja, die MUSS so heissen!

Nogge 30. Jan 2005 10:58

Re: Explorerabsturz => TNA-Icons verschwunden
 
OK, hatte ich aber auch sofort gemacht, nur wurde das Icon trotzdem nicht hinzugefügt. Ich hab da noch ne Frage zu dem Code: Reicht nicht einfach inherited anstelle von Inherited WndProc(Message); ? Ich verändere ja die Message nicht...

Muetze1 30. Jan 2005 22:23

Re: Explorerabsturz => TNA-Icons verschwunden
 
Moin!

1. DoClose und DoShow sind die virtuellen Methoden der Form die bei zugewiesenem Ereignis das jeweilige auslösen - das wäre bei dir dann OnClose und OnShow, bzw. als Implementation dann FormClose() und FormShow(). Beim überschreiben der virtuellen Methoden bleiben aber die Ereignisse weiterhin nutzbar.

2. Ja, es muss genau so heissen. Und eine GUID hat damit nix zu tun...

3. Also bei mir klappt das einwandfrei. Wenn ich mal so den explorer.exe kille im TaskManager (egal ob XP oder 2000), dann kommt das Icon wunderbar wieder.

4. Inherited ohne weitere Parameter ruft die überschriebene Methode mit der Parameterliste wie sie im Eintritt deiner eigenen Methode waren auf. Daher kannst du dies weglassen, ja.

5. Ansonsten hast du vielleicht noch irgendwo einen andere Kleinigkeit die das Prog zum nicht-funktionieren treibt. Vergleich sonst mal mit meinem Projekt-Grundgerüst was das beschriebene Problem nicht hat und ordentlich arbeitet: der gleiche Link wie bei meinem letzten Beitrag

MfG
Muetze1

Nogge 31. Jan 2005 12:50

Re: Explorerabsturz => TNA-Icons verschwunden
 
So, hab die "Kleinigkeit" in meinem Quellcode gefunden. Danke für den Tipp, Muetze1 ;-) Hatte vergessen, vor den Hinzufügen des Icons in die TNA nach dem Explorerabsturz die Var "IconAdded" auf false zu setzen o_O
Eigene Fehler zu erkennen, ist immer schwieriger^^

mfg Nogge


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.

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