Registriert seit: 3. Jan 2006
509 Beiträge
Delphi 7 Enterprise
|
Auf das Schließen eines Explorer-Fensters warten
31. Aug 2011, 23:31
Hallo!
Ich möchte gerne ein neues Explorer-Fenster mit einem bestimmten Pfad öffnen und dann darauf reagieren, wenn dieses Fenster geschlossen wird. Das Starten des Explorers mit einem bestimmten Pfad habe ich jetzt auf zwei Arten erfolgreich ausprobiert: ShellExecuteEx und CreateProcess.
ShellExecuteEx liefert für hProcess immer 0 (das ist nur beim explorer der Fall, bei anderen Programmen funktioniert das).
Und bei CreateProcess bekomme ich zwar einen Wert hProcess <> 0 , aber WaitForSingleObject(hProcess, INFINITE);
kehrt sofort mit dem Rückgabewert WAIT_FAILED zurück.
Ich glaube ich verstehe warum es nicht funktioniert: Wenn ich ein normales Programm öffne, so wird ein neuer Prozess gestartet, der dann auch im Taskmanager auftaucht. Beim Explorer allerdings ist immer nur eine Instanz "explorer.exe" gestartet. Es wird nur ein weiteres Explorer-Fenster geöffnet, das dem bereits existierenden Prozess "explorer.exe" hinzugefügt wird. Mein neu gestarteter Explorer-Prozess wird wahrscheinlich sofort wieder geschlossen oder erst gar nicht gestartet.
Aber selbst wenn das die richtige Erklärung ist, weiß ich leider keine Lösung...
Theoretisch könnte ich mit FindWindow()
nach einem Fenster mit dem Pfadname als Titel suchen und dann auf dessen Beendung reagieren. Allerdings könnten ja mehrere Explorer-Fenster mit diesem Pfad geöffnet sein und da wäre es mir lieber ich könnte irgendwie mit hProcess oder Ähnlichem arbeiten um sicherzugehen dass ich das richtige Fenster/den richtigen Prozess beobachte.
Vielen Dank schonmal für eure Hilfe!
Grüße
blabla
|