Also habe ich in Delphi ein Formular erstellt, mit dem ich verschiedene Sikuli-Skripte mit verschiedenen Konfigurationen ausführen kann. Woran ich gerade arbeite, ist es, dass jemand, der das Formular benutzt, verschiedene Sikuli-Skripte einrichten kann, die nacheinander ausgeführt werden können. Wie in:
Schritt 1: SikuliScript1 mit ConfigFile1. Schritt 2: SikuliScript2 mit ConfigFile2. etc... Das ist mein Code bisher:
%Vor%Und das funktioniert perfekt, das Sikuli-Skript läuft perfekt, und während des Laufens ist die cmd-Zeile mit den verschiedenen Aktionen sichtbar, die gerade ausgeführt werden. Nachdem das sikuli-Skript fertig ist, schließt sich die cmd-Zeile von selbst. Der Shell-Handler weiß also, wann er den laufenden Prozess beenden muss. Also meine Frage ist: Ist es möglich, Delphi zu sagen: Nachdem der Handler den Prozess geschlossen hat, führen Sie den nächsten Prozess (Sikuli Script)? Jetzt weiß ich, dass ich mit dem ganzen createProcess in Delphi gehen kann, aber es scheint einfach übertrieben. Es muss einen Weg geben, dies schneller und einfacher zu machen. Jeder hat eine Ahnung?
Mit CreateProcess können Sie ein Prozess-Handle abrufen und mit WaitForSingleObject können Sie überprüfen, wann der Prozess abgeschlossen ist. Ich benutze die folgende Funktion, die den Befehl im Hintergrund ausführt:
%Vor%Sie müssen warten, bis der Prozess-Handle signalisiert wird. Zum Beispiel durch einen Aufruf von WaitForSingleObject. Offensichtlich gibt CreateProcess eine Prozesskennung zurück, auf die Sie warten können. Sie können ShellExecute nicht dazu überreden, einen Prozess-Handle zurückzugeben, aber sein fähigerer Bruder ShellExecuteEx wird dies tun.
Allerdings würde ich persönlich CreateProcess hier wählen. Sie erhalten mehr Flexibilität und Kontrolle, und es ist nicht so komplex. Beispielsweise können Sie die Anzeige des Konsolenfensters bei Bedarf unterdrücken.
Ok, ich habe mehr darüber gelesen und es gelöst, genau wie David es vorgeschlagen hat. Ich werde zeigen, was ich getan habe, sollte jemand andere die Fragen oder irgendetwas haben:
%Vor%Funktioniert genau so, wie ich es wollte. Die 2 sikuli Skripte werden nacheinander ausgeführt.