Autor Beitrag
RedArcus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

Win Vista; Windows7; Win10
D5 Prof; Delphi XE5; Delphi Tokyo
BeitragVerfasst: Do 13.03.08 12:00 
Hallo habe folgendes Problem.

Ich ändere in der Registry den Eintrag, dass alle bekannten Erweiterungen von Dateitypen eingeblendet werden sollen. Das funktioniert auch so weit, nun sollen auch alle geöffneten Fenster aktualisiert werden. Dazu habe ich es mit den Funktionen

ausblenden Delphi-Quelltext
1:
  SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0, SMTO_ABORTIFHUNG, 500, xResult);					

und
ausblenden Delphi-Quelltext
1:
  SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);					


versucht. Beide jedoch ohne zufrieden stellende Erfolge. Mit SendMessage scheint es einigermaßen hinzuhauen, da nach F5 im Explorer die Erweiterungen angezeigt werden oder nicht, je nach Einstellung. Das Ausführen von SendMessage dauert aber recht lange 2-3 Sec.

Wenn ich zwei mal den Explorer geöffnet habe und in einem über die Optionen die Erweiterungen ei-/ausblende werden die im zweiten Fenster auch angepasst. Also muss es doch auch unter Delphi möglich sein.
Kann mir jemand sagen wie?

Vielen Dank für eure Hilfe

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
Logikmensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: Fr 14.03.08 06:08 
Hallo,

also, dazu kann ich nur sagen, dass manche Dinge eben Zeit brauchen. Im Grunde ist das, was Du machst, doch der richtige Weg. Wenn der Explorer hinterher einige Sekunden braucht, um das zu verarbeiten (ist ja auch ein tiefgehender Vorgang mit den Extensions), dann ist das doch sein Problem und nicht Deines.

Ich würde da eher davon abraten, jetzt noch versuchen zu wollen, die einzelnen offenen Explorerfenster zu suchen und denen nocheinmal "einen Klaps auf den Hintern" zu geben. Das muss das System schon selber tun.

_________________
Es gibt keine Probleme - nur Lösungen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.03.08 11:39 
user profile iconRedArcus hat folgendes geschrieben:
WM_SETTINGCHANGE

Das kann natürlich nur funktionieren, wenn die Programme in ihrem toplevel Window auch die Nachricht reagieren.
RedArcus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

Win Vista; Windows7; Win10
D5 Prof; Delphi XE5; Delphi Tokyo
BeitragVerfasst: Fr 14.03.08 11:53 
Hallo Luckie,

was meintst du mit "wenn die Programme in ihrem toplevel Window auf die Nachricht reagieren"? Sobald ich SendMessage mit dem Parameter HWND_BROADCAST aufrufe sollten doch ALLE Fenster angesprochene werden, oder?

Gruß

Hans
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.03.08 14:23 
user profile iconRedArcus hat folgendes geschrieben:
was meintst du mit "wenn die Programme in ihrem toplevel Window auf die Nachricht reagieren"? Sobald ich SendMessage mit dem Parameter HWND_BROADCAST aufrufe sollten doch ALLE Fenster angesprochene werden, oder?

Klar wird die nachricht an alle Fenster gesendet, aber wenn diese nun mal nicht auf die Nachricht reagieren? mach einfach eine leer VCL-Anwendung und guck was passiert, wenn du die Nachricht verschickst. Nämlich nichts. wenn du deinem fenster nicht sagst, dass es auf die nachricht reagieren soll, dann wird es das auch nicht tun.