Ich möchte für mein Programm eine individuelle PlacesBar zu erzeugen. Dazu habe ich gelesen, dass man die Zugriffe auf den Registry-Eintrag, auf dem die PlacesBar-Einträge für den normalen Datei-Öffnen/Speichern Dialog von Windows stehen ('HKEY_CURRENT_USER\Software\Microsoft\Windows\Cur rentVersion\Policies\comdlg32\PlacesBar') auf einen anderen Eintrag mit der Funktion RegOverridePredefKey umlenken kann.
Die
API-Funktion RegOverridePredefKey habe ich eingebunden wie von Phoenix beschrieben (
Delphi-Praxis-Forum:TRegistry-Aktuellen Pfad speichern)
Da man dieser Funktion einen HKey übergeben muss, habe ich versucht diesen mit Reg.CurrentKey zu bestimmen und folgenden Quelltext geschrieben:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
Reg : TRegistry;
StdPlacesStr : String;
NewPlacesStr : String;
StdPlacesKey : HKey;
NewPlacesKey : HKey;
begin
StdPlacesStr:=
'\Software\Microsoft\Windows\CurrentVersion\Policies\comdlg32\PlacesBar';
NewPlacesStr:='\Software\MyComp\MyProg\PlacesBar';
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey(StdPlacesStr,True);
StdPlacesKey:=Reg.CurrentKey;
Reg.CloseKey;
Reg.OpenKey(NewPlacesStr,True);
NewPlacesKey:=Reg.CurrentKey;
Reg.WriteString('Place0',ExtractFilePath(Application.ExeName));
RegOverridePredefKey(StdPlacesKey, NewPlacesKey);
Reg.Free;
end;
Das ganz scheint aber nicht zu funktionieren. Im Debugger zeigt der Aufruf von CurrentKey an zwei unterschiedlichen Stellen der Registry den gleichen Wert an.
Kann mir jemand helfen (oder kommt jede Hilfe zu spät?)
Danke