Wie warten Sie, bis ShellExecute ausgeführt wird?
Ich habe verwaltet, um die Verwendung von ShellExecute in VC++ in um um ein Dokument zu starten.
Jetzt will ich einen Befehl-Linie Werkzeug, erhält einige Argumente, und im hintergrund laufen (als versteckte, nicht minimiert) und lass es blockiert mein Programm fließen, so dass ich in der Lage sein zu warten, bis es zu beenden.
Wie ich das verändern der Befehls-Zeile:
ShellExecute(NULL,"open",FULL_PATH_TO_CMD_LINE_TOOL,ARGUMENTS,NULL,SW_HIDE);
Das problem ist, ich habe tool, das wandelt html zu pdf, und ich Wünsche mir, dass, sobald das tool fertig, auch bekannt als pdf-Datei bereit, um eine andere Funktion ShellExecute, um es anzuzeigen.
InformationsquelleAutor der Frage buddy123 | 2013-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein CodeProject-Artikeldie zeigt, wie durch die Verwendung
ShellExecuteEx
stattShellExecute
:Der entscheidende Punkt ist, dass die fahne
SEE_MASK_NOCLOSEPROCESS
die als MSDN sagtBeachten Sie auch, dass:
InformationsquelleAutor der Antwort Roger Rowland
Können Sie auch verwenden, CreateProcess statt ShellExecute/ShellExecuteEx. Diese Funktion enthält eine cmd.exe wrapper-option, die Rückkehr der exit-code, und die Rückgabe von stdout. (Das schließt nicht perfekt sein).
Hinweise: In meinem Gebrauch, ich wusste, dass es sein musste stdout Ergebnisse, aber die PeekedNamePipe Funktion würde nicht immer wieder die Byte-Zählung auf den ersten versuchen, damit die Schleife da. Vielleicht kann jemand herausfinden und posten Sie eine überarbeitung? Auch vielleicht eine Alternative version produziert werden sollte, die Renditen stderr getrennt?
InformationsquelleAutor der Antwort BuvinJ