AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Welche Window Message bei Neustart von explorer.exe

Ein Thema von CCRDude · begonnen am 12. Dez 2011 · letzter Beitrag vom 13. Dez 2011
Antwort Antwort
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#1

Welche Window Message bei Neustart von explorer.exe

  Alt 12. Dez 2011, 15:35
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?
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 00:00
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 01:24
Da die Taskbar vom Explorer dargestellt wird und somit auch eine Tastbar erstellt wird, wenn der Explorer neu startet ...

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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Dez 2011 um 01:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 08:21
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 08:35
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 08:44
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 08:49
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 08:59
Dann muss ich ein anderes Windows XP benutzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 09:13
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Welche Window Message bei Neustart von explorer.exe

  Alt 13. Dez 2011, 10:27
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.
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).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 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