AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Shellexecute mit explorer.exe -> Fenster verhindern

Shellexecute mit explorer.exe -> Fenster verhindern

Ein Thema von Tannendiess · begonnen am 1. Feb 2006 · letzter Beitrag vom 2. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2   
Tannendiess

Registriert seit: 28. Feb 2004
10 Beiträge
 
Delphi 7 Professional
 
#1

Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 1. Feb 2006, 23:25
Hallo,

ich muss in meinem Programm zwischendurch die Registry neu laden. Dazu beende ich den Prozess explorer.exe und starte ihn mit
ShellExecute(0, Nil, PChar('explorer.exe'), nil, nil, SW_HIDE); neu. Trotz des "SW_HIDE" erscheint nicht nur die Taskleiste wieder, sondern es öffnet sich auch ein Windows-Explorer-Fenster im Ordner "Eigene Dateien".

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ß
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 1. Feb 2006, 23:42
Ich seh den Zusammenhang zwischen Registry und Explorer nicht...

Wie greifst Du denn auf die Registry zu?
  Mit Zitat antworten Zitat
Tannendiess

Registriert seit: 28. Feb 2004
10 Beiträge
 
Delphi 7 Professional
 
#3

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 1. Feb 2006, 23:43
Dadurch, dass ich den Explorer beende und neu starte, wird die Registry neu geladen. Das geschieht bei jedem Start des Explorers.
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 12. Feb 2005
193 Beiträge
 
#4

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 1. Feb 2006, 23:53
probier mal bei dem ersten nil ein 'open' und das hide lass weg

ansonsten nimm CreateProcess
  Mit Zitat antworten Zitat
Tannendiess

Registriert seit: 28. Feb 2004
10 Beiträge
 
Delphi 7 Professional
 
#5

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 2. Feb 2006, 15:00
Zitat von retnyg:
probier mal bei dem ersten nil ein 'open' und das hide lass weg
Dann öffnet er trotzdem das Explorer-Fenster.

Zitat von retnyg:
ansonsten nimm CreateProcess
Hab ich mal probiert. Dazu habe ich mir folgende Funktion kopiert:
Delphi-Quellcode:
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;
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'.

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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 2. Feb 2006, 15:03
Zitat:
C:\Dokumente und Einstellungen\Michael>net helpmsg 2

Das System kann die angegebene Datei nicht finden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tannendiess

Registriert seit: 28. Feb 2004
10 Beiträge
 
Delphi 7 Professional
 
#7

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 2. Feb 2006, 15:10
Sorry, das verstehe ich nicht ganz.

Welche Datei ist gemeint? Der Explorer startet ja schließlich.
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 12. Feb 2005
193 Beiträge
 
#8

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 2. Feb 2006, 16:25
warum 2x createprocess ?
  Mit Zitat antworten Zitat
Tannendiess

Registriert seit: 28. Feb 2004
10 Beiträge
 
Delphi 7 Professional
 
#9

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 2. Feb 2006, 16:58
Sorry, muss ich wohl falsch reinkopiert haben. So heißt es richtig:

Delphi-Quellcode:
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;
Der Fehler tritt aber trotzdem auf.
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 12. Feb 2005
193 Beiträge
 
#10

Re: Shellexecute mit explorer.exe -> Fenster verhindern

  Alt 2. Feb 2006, 17:11
'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:

showmessage(Format('Programm kann nicht gestartet werden. Fehler : %s',[syserrormessage(dwError)]));
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:09 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