![]() |
ShellExecuteEx öffnet, beendet aber auch
Hallo!
Leider habe ich ein kleines Problem. Mit folgendem Code soll Apache versteckt geöffnet werden und sobald er fertig geladen ist, der IE starten (der wiederum eine Seite vom Webserver aufruft). Beide Programme starten auch, nur schließt sich der Apache wieder bevor der IE anspringt. Was könnte da falsch laufen? Der Apache sollte im Hintergrund weiterlaufen.
Delphi-Quellcode:
var
ShExecInfo : SHELLEXECUTEINFO; begin ShExecInfo.cbSize := sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS; ShExecInfo.lpVerb := nil; ShExecInfo.lpFile := PChar('...\apache\bin\Apache.exe'); ShExecInfo.lpDirectory := nil; ShExecInfo.nShow := SW_HIDE; ShellExecuteEx(@ShExecInfo); WaitForSingleObject(ShExecInfo.hProcess,INFINITE); ShellExecute(0,'open',PCHar('...\Internet Explorer\iexplore.exe'),nil,nil,SW_MAXIMIZE); end; |
Re: ShellExecuteEx öffnet, beendet aber auch
Mit WaitForSingleObject(...) wartest du, soweit ich weiß, bis der Apache wieder beendet wird. Vielleicht solltest du einen anderen Timeout einstellen und prüfen, obs dann funktioniert.
|
Re: ShellExecuteEx öffnet, beendet aber auch
|
Re: ShellExecuteEx öffnet, beendet aber auch
Zitat:
WaitForInputIdle ist die richtige Wahl, habe es auch ausprobiert, nur irgendwie passiert dasselbe :? Was nun? |
Re: ShellExecuteEx öffnet, beendet aber auch
Würde sagen, dass du auch ein Directory (lpDirectory) angeben solltest. Denke mal, dass beim Starten von Apache irgendein Fehler auftritt und dadurch beendet wird. Musst mal in den Logfiles schauen.
|
Re: ShellExecuteEx öffnet, beendet aber auch
Hilft leider auch nichts und Apache logt keine Error :(
Edit: Du hast mich doch auf die richtige Spur gebracht. Apache brauchte (auch noch) lpParameters :) Jetzt gehts! Hier der ausgebesserte Code:
Delphi-Quellcode:
var
ShExecInfo : SHELLEXECUTEINFO; begin ShExecInfo.cbSize := sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS; ShExecInfo.lpVerb := nil; ShExecInfo.lpFile := PChar('...\bin\Apache.exe'); ShExecInfo.lpParameters := ''; ShExecInfo.lpDirectory := PChar('...\bin'); ShExecInfo.nShow := SW_HIDE; ShellExecuteEx(@ShExecInfo); WaitForInputIdle(ShExecInfo.hProcess,INFINITE); ShellExecute(0,'open',PCHar('...\Internet Explorer\iexplore.exe'),nil,nil,SW_MAXIMIZE); end; |
Re: ShellExecuteEx öffnet, beendet aber auch
Vielleicht noch als abschliessende Ergänzung:
Delphi-Quellcode:
CloseHandle(ShExecInfo.hProcess);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 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-2025 by Thomas Breitkreuz