Einzelnen Beitrag anzeigen

ScotsMan

Registriert seit: 1. Nov 2006
Ort: Leipzig
13 Beiträge
 
Delphi XE5 Professional
 
#1

Aktualisierung der Einstellungen im Windows Explorer

  Alt 4. Feb 2014, 13:37
Hallo, allerseits,

es gibt an verschiedenen Stellen bereits einige Threads dazu, aber irgendwie keine Loesung:

Wenn ich in Delphi Registrierungswerte fuer Explorereinstellungen aendere, dann merkt das der Explorer nicht. Erst, wenn man ihn mit F5 aktualisiert (oder: sich ab- und anmeldet), ist alles richtig. Logisch: er ist ja immer aktiv, also muss ich ihn "kicken", damit er schneidet, dass etwas geschehen ist. Nur wie?

Die verschiedenen Threads beschreiben viele Loesungen, einige habe ich ausprobiert:

Delphi-Quellcode:
program RegEdit_TPS;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Windows, Messages, Registry, ShlObj;

var RegObj : TRegistry;
    R : Integer;
    wndMain: HWND;

begin
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    RegObj := TRegistry.Create;
    RegObj.RootKey := $80000001;
    if RegObj.OpenKey ('\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced', false) then
      begin
        RegObj.WriteInteger ('HideFileExt',0);
// Versuche ueber Settingchange
        Sendmessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
        SendMessageTimeout( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0,
                            SMTO_ABORTIFHUNG, 100, @R );
// Versuch ueber SHChangeNotify
        SHChangeNotify(SHCNE_GLOBALEVENTS,SHCNF_NOTIFYRECURSIVE + SHCNF_FLUSH,nil,nil);
// Versuch ueber SystemParametersInfo
        SystemParametersInfo (SPI_SETDESKWALLPAPER,0, nil,SPIF_SENDWININICHANGE);
// ... und das Explorerfenster wird auch nicht gefunden
       wndMain := FindWindow('explorer.exe',nil);
       if wndMain <> 0 then
         PostMessage(wndMain, WM_KEYDOWN, VK_F5, 0) else
         Messagebox (0, 'huhu','huhu',0);
      end;
    RegObj.Free;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Funktionieren tuts allerdings alles nicht: Die Funktion (hier: Erweiterungen einblenden) kommt erst nach F5. Das ist zwar besser als nie, aber ich haette es eben gerne gleich...

Hat Jemand eine Idde oder einen Link, den ich nicht gefunden habe?

Gruesse
ScotsMan
$ route add default roma.it
  Mit Zitat antworten Zitat