Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CreateProcess und mehrere Konsolenbefehle (https://www.delphipraxis.net/116483-createprocess-und-mehrere-konsolenbefehle.html)

Apollonius 1. Jul 2008 12:45

Re: CreateProcess und mehrere Konsolenbefehle
 
Das Try-Except halte ich für sinnlos, streiche mal das Try sowie alles von Except bis zum folgenden End.

Zitat:

Erst wenn der Rückgabewert von CreateProcess true ist, ist der Befehl oder die Anwendung abgearbeitet.
Der Rückgabewert von CreateProcess wird natürlich nur einmal gesetzt. Er gibt nur an, ob das Erstellen erfolgreich war (false ist er z.B., wenn die Datei nicht existiert).
Das eigentliche Warten findet in WaitForSingleObject statt. Ein Prozess-Handle ist nämlich genau dann signalisiert, wenn der Prozess beendet ist. INFINITE bedeutet, dass es keinen Timeout gibt.
Diese Funktion würde ich nicht in einem GUI-Thread aufrufen. Falls du das tun willst, solltest du statt INFINITE einen kurzen Timeout setzen, beispielsweise 200 (Millisekunden) (das bewirkt, dass die Funktion zurückkehrt, wenn der Prozes beendet wurde oder der Timeout abgelaufen ist), oder gleich auf MsgWaitForMultipleObjects umsteigen, da das ermöglicht, Nachrichten parallel abzuarbeiten. Andernfalls kann es passieren, dass die Anwendung einfriert.

Sunshine21 1. Jul 2008 13:20

Re: CreateProcess und mehrere Konsolenbefehle
 
Also das mit dem Timeout klingt interessant.

Delphi-Quellcode:
bei WaitForSingleObject(ProcInfo.hProcess, 200);
würden als 200ms verstreichen und dann ein Timeout zurückgegeben werden?

Ich würde es gerne so konstruieren, dass ich mit CreateProcess einen Netsh-Befehl ausführe, und erst wenn dieser erfolgreich ausgeführt wurde soll die nächste Zeile in der Aufruffunktion abgearbeitet werden.
Falls der Befehl nicht korrekt abgearbeitet wurde oder eine Zeit überschritten wurde soll dies z.B. durch ein false gemeldet werden.

Apollonius 1. Jul 2008 13:23

Re: CreateProcess und mehrere Konsolenbefehle
 
Das Denken nehme ich dir nicht ab. :wink: MSDN-Library durchsuchenWaitForSingleObject

Sunshine21 1. Jul 2008 14:03

Re: CreateProcess und mehrere Konsolenbefehle
 
Brauchst du auch nicht. Sag mir nur wie ich ein Timeout inzenieren kann um testen zu können ;)

Dezipaitor 1. Jul 2008 14:12

Re: CreateProcess und mehrere Konsolenbefehle
 
Warum schaust du dir nicht die MSDN Doku dazu an?

Sunshine21 2. Jul 2008 09:09

Re: CreateProcess und mehrere Konsolenbefehle
 
Zitat:

Zitat von Dezipaitor
Warum schaust du dir nicht die MSDN Doku dazu an?

Hab ich schon gemacht konnte aber nichts über Timeoutinzenierung finden. Du?

Dezipaitor 2. Jul 2008 13:07

Re: CreateProcess und mehrere Konsolenbefehle
 
Das heißt dort: "time-out".


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.
Seite 2 von 2     12   

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