![]() |
Shellexecute mit explorer.exe -> Fenster verhindern
Hallo,
ich muss in meinem Programm zwischendurch die Registry neu laden. Dazu beende ich den Prozess explorer.exe und starte ihn mit
Delphi-Quellcode:
neu. Trotz des "SW_HIDE" erscheint nicht nur die Taskleiste wieder, sondern es öffnet sich auch ein Windows-Explorer-Fenster im Ordner "Eigene Dateien".
ShellExecute(0, Nil, PChar('explorer.exe'), nil, nil, SW_HIDE);
Wie kann ich verhindern, dass sich dieses Fenster öffnet? Oder gibt es sogar noch eine einfachere Möglichkeit, die Registry neu zu laden? Danke schonmal im Voraus! Tannendieß |
Re: Shellexecute mit explorer.exe -> Fenster verhindern
Ich seh den Zusammenhang zwischen Registry und Explorer nicht...
Wie greifst Du denn auf die Registry zu? |
Re: Shellexecute mit explorer.exe -> Fenster verhindern
Dadurch, dass ich den Explorer beende und neu starte, wird die Registry neu geladen. Das geschieht bei jedem Start des Explorers.
|
Re: Shellexecute mit explorer.exe -> Fenster verhindern
probier mal bei dem ersten nil ein 'open' und das hide lass weg
ansonsten nimm CreateProcess |
Re: Shellexecute mit explorer.exe -> Fenster verhindern
Zitat:
Zitat:
Delphi-Quellcode:
Es funktioniert zwar alles, auch das Explorer-Fenster geht dann nicht mehr auf. Es kommt aber folgender Fehler: 'Programm kann nicht gestartet werden. Fehler : 2'.
procedure TForm1.ExplorerStarten;
var aSi:TStartUpInfo; aPI:TProcessInformation; dwError:DWord; begin FillChar(aSi,SizeOf(TStartupInfo),0); with aSI do begin cb:=SizeOf(TStartupInfo); dwFlags:=STARTF_USESHOWWINDOW; wShowWindow:=SW_HIDE; end; if not createprocess( CreateProcess(PChar('explorer.exe'),nil,nil,nil,false, NORMAL_PRIORITY_CLASS,nil,nil,aSI,aPI) then begin dwError:= GetLastError; showmessage(Format('Programm kann nicht gestartet werden. Fehler : %d',[dwError])); end; end; Ich könnte natürlich einfach die Fehlermeldung deaktivieren, dann würde alles laufen. Aber der Fehler kommt ja nicht umsonst. Was bedeutet er und wie kann ich ihn verhindern? |
Re: Shellexecute mit explorer.exe -> Fenster verhindern
Zitat:
|
Re: Shellexecute mit explorer.exe -> Fenster verhindern
Sorry, das verstehe ich nicht ganz.
Welche Datei ist gemeint? Der Explorer startet ja schließlich. |
Re: Shellexecute mit explorer.exe -> Fenster verhindern
warum 2x createprocess ? :roll:
|
Re: Shellexecute mit explorer.exe -> Fenster verhindern
Sorry, muss ich wohl falsch reinkopiert haben. So heißt es richtig:
Delphi-Quellcode:
Der Fehler tritt aber trotzdem auf.
procedure TForm1.ExplorerStarten;
var aSi:TStartUpInfo; aPI:TProcessInformation; dwError:DWord; begin FillChar(aSi,SizeOf(TStartupInfo),0); with aSI do begin cb:=SizeOf(TStartupInfo); dwFlags:=STARTF_USESHOWWINDOW; wShowWindow:=SW_HIDE; end; if not CreateProcess(PChar('explorer.exe'),nil,nil,nil,false, NORMAL_PRIORITY_CLASS,nil,nil,aSI,aPI) then begin dwError:= GetLastError; showmessage(Format('Programm kann nicht gestartet werden. Fehler : %d',[dwError])); end; end; |
Re: Shellexecute mit explorer.exe -> Fenster verhindern
'explorer' als 2 parameter hilft.
was auch hilft ist das PSDK oder die msdn seite, wo du dich über die befehle die du einsetzt, informieren kannst sehr hilfreich ist auch, zu verstehen was die quelltexte machen die man verwendet und nicht blind drauflos-copy&pastet und noch hilfreicher ist eine detaillierte fehlermeldung:
Delphi-Quellcode:
showmessage(Format('Programm kann nicht gestartet werden. Fehler : %s',[syserrormessage(dwError)]));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz