Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Welche Window Message bei Neustart von explorer.exe (https://www.delphipraxis.net/165045-welche-window-message-bei-neustart-von-explorer-exe.html)

CCRDude 12. Dez 2011 15:35

Welche Window Message bei Neustart von explorer.exe
 
Ich habe ein TListView, dessen ViewStyle der Benutzer ändern kann.

"Dummerweise" verwende ich auch den Tile-Modus, wofür ich TListView leicht ergänzen muss.

Wenn nun explorer.exe neu gestartet wird, sendet es wohl irgend eine Window Message an TListView, die dieses den Modus anhand seiner originären Einstellungen neu setzen lässt.

Da ich weiterhin mit TListView ohne eigene Klasse arbeiten will (ein class helper, der quasi nur ListView_SetView aufruft), muss ich die Window Message wohl in meiner Form "abfangen" und den Tile-Modus neu setzen.

Weiß jemand zufällig, welche WM da gesendet wird?

Delphi-Laie 13. Dez 2011 00:00

AW: Welche Window Message bei Neustart von explorer.exe
 
Zitat:

Zitat von CCRDude (Beitrag 1141003)
Weiß jemand zufällig, welche WM da gesendet wird?

Das nicht, aber es gibt ein wunderbares Programm von Frank Abbing, das da "Botschafter" heißt und mit dem man sich (ziemlich? fast?) alle Botschaften anzeigen lassen und man mithin evtl. auch diese Botschaft ermitteln kann. Da es mit Hook funktioniert (soweit ich mich entsinne), funktioniert es aber nur unter 32 Bit.

himitsu 13. Dez 2011 01:24

AW: Welche Window Message bei Neustart von explorer.exe
 
Da die Taskbar vom Explorer dargestellt wird und somit auch eine Tastbar erstellt wird, wenn der Explorer neu startet ...

Delphi-Quellcode:
RM_TaskBarCreated := RegisterWindowMessage('TaskbarCreated');
.
Das ergibt eine MessageID, ähnlich wie WM_WININICHANGE ... nur eben dynmisch.

Statt auf RM_TaskBarCreated zu lauschen, kannst'e auch auf CM_WININICHANGE hören, denn Dieses (und Andere) löst Delphi intern aus, wenn RM_TaskBarCreated eintrudelt.
> z.B. WndProc der Haupform oder TApplicationEvents.OnMessage

Luckie 13. Dez 2011 08:21

AW: Welche Window Message bei Neustart von explorer.exe
 
Das habe ich auch schon überlegt. Nur wird die Taskbar ja nur neu erstellt, wenn du den Explorer, der für den Desktop zuständig ist, abschießt und wieder startest. Das kann ja wohl kaum gemeint sein.

CCRDude 13. Dez 2011 08:35

AW: Welche Window Message bei Neustart von explorer.exe
 
Vielen Dank euch dreien!

Im TApplicationEvents.OnMessage habe ich nichts empfangen, aber da ich WndProc eh schon verwende - dort funktioniert ein reagieren auf TaskbarCreated wunderbar, jetzt überlebt ViewStyle = vsTile auch einen explorer.exe-Neustart unter XP :)

Wenn ich die Webseite des richtigen Frank Abbing gefunden habe, habe ich dort leider keinen "Botschafter" gefunden, hört sich aber spannend an.

Luckies Einwand ist einerseits korrekt - je nach User-Einstellung können mehrere Explorer-Instanzen laufen. Aber: es geht ja quasi um die Message, die die VCL den ListView-Style neu (anhand des FListView anstelle des Styles, den ich per WinAPI gesetzt habe) setzen lässt. Und das scheint nur beim Start des für die Taskbar zuständigen Explorer zu passieren, nicht bei getrennten Instanzen für Ordneransichten.

Luckie 13. Dez 2011 08:44

AW: Welche Window Message bei Neustart von explorer.exe
 
Darf ich mal fragen, was die Benutzer deines Programms mit ihrem System machen, dass sie während dein Programm läuft den Explorer abschießen? Und das wohl regelmäßig andauernd, dass du das extra berücksichtigen musst. :roll:

Medium 13. Dez 2011 08:49

AW: Welche Window Message bei Neustart von explorer.exe
 
Och, das war vor allem unter XP doch an der Tagesordnung, wenn man mal wieder wackeliges LAN hatte, und versehentlich im Dateiexplorer eine Netzresource angeklickt hat.

Luckie 13. Dez 2011 08:59

AW: Welche Window Message bei Neustart von explorer.exe
 
Dann muss ich ein anderes Windows XP benutzen.

Sherlock 13. Dez 2011 09:13

AW: Welche Window Message bei Neustart von explorer.exe
 
Zitat:

Zitat von Luckie (Beitrag 1141080)
Dann muss ich ein anderes Windows XP benutzen.

In einer Windows-Domäne? Denn dort ist genau das, was Medium schilderte wirklich oft vorgekommen. XP weine ich nicht eine Träne nach. Ich liebe Win7.

Sherlock

CCRDude 13. Dez 2011 10:27

AW: Welche Window Message bei Neustart von explorer.exe
 
Zitat:

Zitat von Luckie (Beitrag 1141077)
Darf ich mal fragen, was die Benutzer deines Programms mit ihrem System machen, dass sie während dein Programm läuft den Explorer abschießen? Und das wohl regelmäßig andauernd, dass du das extra berücksichtigen musst. :roll:

Die Benutzer meines Programmes entfernen damit Malware. Und da gibt es diverse, zu denen explorer.exe auch mal ein Dateihandle offen hat (Toolbars, Kontextmenü-Einträge, Hooks &c.). Natürlich muss der Benutzer explorer.exe nicht selber beenden und neustarten und auch wir machen das nicht regelmässig von der Software aus, aber manchmal stirbt der Patient eben auch, wenn man nur sanft daran rumdoktort (DLLs zu entladen oder Hooks zurückzubiegen versucht).


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 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