Итак, я сделал форму в Delphi, которая позволяет запускать различные скрипты sikuli с различными конфигурациями. Теперь я работаю над тем, чтобы кто-то использовал форму, чтобы настроить различные скрипты sikuli для запуска по другому. Как в:Как я могу дождаться завершения внешнего процесса?
Шаг 1: SikuliScript1 с ConfigFile1. Шаг 2: SikuliScript2 с ConfigFile2. и т.д ... Это мой код до сих пор:
procedure TSikRunForm.btnRunClick(Sender: TObject);
begin
DirCombo:= '/C '+DirSik+'\sikuli-script.cmd' +' -r ' + DirScript + ' --args '+DirConfig;
if SikFound then begin
ShellExecute(Handle, nil, 'cmd.exe', pChar(DirCombo), nil, SW_SHOWNORMAL);
Application.minimize;
end else begin
ShowMessage('Select the correct folder for your Sikuli installation folder');
end;
end;
И это отлично работает, то sikuli скрипт работает отлично, и во время работы, то CMD линия видна с различными действиями, показанными, которые выполняются. После выполнения сценария сикули линия cmd закрывается сама по себе. Поэтому обработчик оболочки знает, когда нужно завершить выполняющийся процесс. Поэтому мой вопрос: можно ли рассказать delphi: после того, как обработчик закрыл процесс, запустите следующий процесс (скрипт Sikuli)? Теперь я знаю, что могу работать со всем createProcess в delphi, но это просто кажется излишним. Должен быть способ сделать это быстрее и легче. У кого-нибудь есть ключ?
Если вы хотите перекачать очередь, лучше использовать 'MsgWaitForMultipleObjects'. Кроме того, вы пропускаете ручки. Два для каждого вызова этой функции. –
Почему downvote? – OnTheFly
@DavidHeffernan Почему downvote? Вы правы в отношении ручек (мой плохой), но это дает решение вопроса, запуская один процесс за другим. –