Подождите, пока предыдущий процесс завершится до начала нового -- subprocess поле с участием autohotkey пол Связанный проблема

Wait for previous process to finish before starting new one


0
vote

проблема

русский

Мне нужно найти путь в AHK, чтобы дождаться программы, чтобы закончить, прежде чем начать новый.

В основном у меня есть скрипт, который открывает приложение и вводит некоторые параметры. Затем приложение проводит неизвестное количество времени обработки входных данных.

К сожалению, в данный момент скрипт AHK заканчивается до завершения обработки приложения, в какой момент одинаковый сценарий AHK работает снова и не работает / прерывает предыдущую обработку.

Редактирование: (AHK .exe называется с использованием вызовов подпроцесс в Python)

Есть ли способ или какие-либо методы, чтобы помочь с этим?

для справки, скрипт:

 <код> #NoEnv CoordMode, Mouse, Window SendInput Mode Input #SingleInstance Force SetTitleMatchMode 2 #WinActivateForce SetControlDelay 1 SetWinDelay 0 SetKeyDelay -1 SetMouseDelay -1 SetBatchLines -1  if 0 < 2  ; The left side of a non-expression if-statement is always the name     of a variable. {     MsgBox, This script requires 2 incoming parameters but it only received     %0%.     ExitApp } IfWinNotExist, ahk_exe photoscan.exe {     Run, "C:Program FilesAgisoftPhotoScan Prophotoscan.exe" } sleep, 200 WinActivate, ahk_exe photoscan.exe sleep,5 WinMaximize, ahk_exe photoscan.exe ;Macro5: Click, 476, 438, 0 SendInput {LControl Down} SendInput {r} Click, -56, 157, 0 WinActivate, Run Python Script ahk_class QWidget sleep, 400 SendInput {LControl Up} SendInput {LControl Down} SendInput {a} SendInput {LControl Up} sleep, 400 SendInput {Backspace} SendInput %1% ; 1st argument is the photoScan API scriptimages folder     directory SendInput {Tab} SendInput {Tab} sleep, 400 SendInput {LControl Down} SendInput {a} ; 2nd argument is additional args (in our case, the     projectName) SendInput {LControl Up} SendInput {Backspace} SendInput %2% ; 2nd argument is the images folder directory & name of output log, model and texture Sleep, 703 SendInput {Enter} Click, 476, 438, 0 Return   
Английский оригинал

I need to find a way in AHK to wait for a program to finish, before starting a new one.

Basically, I have a script that opens an application and inputs some parameters. The application then spends an unknown amount of time processing the input data.

Unfortunately, at the moment the ahk script ends before the application has finished processing, at which point the same ahk script is run again and does not work / interrupts the previous processing.

edit: (the ahk .exe is called using subprocess calls in Python)

is there a way or any methods to help with this?

For reference, the script:

#NoEnv CoordMode, Mouse, Window SendInput Mode Input #SingleInstance Force SetTitleMatchMode 2 #WinActivateForce SetControlDelay 1 SetWinDelay 0 SetKeyDelay -1 SetMouseDelay -1 SetBatchLines -1  if 0 < 2  ; The left side of a non-expression if-statement is always the name     of a variable. {     MsgBox, This script requires 2 incoming parameters but it only received     %0%.     ExitApp } IfWinNotExist, ahk_exe photoscan.exe {     Run, "C:Program FilesAgisoftPhotoScan Prophotoscan.exe" } sleep, 200 WinActivate, ahk_exe photoscan.exe sleep,5 WinMaximize, ahk_exe photoscan.exe ;Macro5: Click, 476, 438, 0 SendInput {LControl Down} SendInput {r} Click, -56, 157, 0 WinActivate, Run Python Script ahk_class QWidget sleep, 400 SendInput {LControl Up} SendInput {LControl Down} SendInput {a} SendInput {LControl Up} sleep, 400 SendInput {Backspace} SendInput %1% ; 1st argument is the photoScan API scriptimages folder     directory SendInput {Tab} SendInput {Tab} sleep, 400 SendInput {LControl Down} SendInput {a} ; 2nd argument is additional args (in our case, the     projectName) SendInput {LControl Up} SendInput {Backspace} SendInput %2% ; 2nd argument is the images folder directory & name of output log, model and texture Sleep, 703 SendInput {Enter} Click, 476, 438, 0 Return 
</div
     
   
   

Список ответов

0
 
vote

У вас есть:

 <код> switch (ch) { // here were your case: blocks of code default:         if (isalpha(ch)) {              string s;             s += ch;             while (cin.get(ch) && (isalpha(ch) || isdigit(ch) || ch == '_')) s += ch;             cin.putback(ch);              if (s == "sqrt") return Token(root); // sqrt() define             return Token(var_name, s);          }         error("Bad token");     } } 7  

, который устанавливается на запуск / запустить приложение, если он не работает. Тогда сон, чтобы позволить две десятые, в секунду для него нагрузки (что, вероятно, слишком мало).

вместо того, чтобы просто «сон» вы должны «WinWait» или «WinWaitactactive», найден по этой ссылке: https://autohotkey.com/docs/commands/winwaitactive.htm

Как этот образец:

 <код> switch (ch) { // here were your case: blocks of code default:         if (isalpha(ch)) {              string s;             s += ch;             while (cin.get(ch) && (isalpha(ch) || isdigit(ch) || ch == '_')) s += ch;             cin.putback(ch);              if (s == "sqrt") return Token(root); // sqrt() define             return Token(var_name, s);          }         error("Bad token");     } } 8  

Вам может также использовать инспектор Window, чтобы получить истинное имя окна / имя приложения / процесса.

 

You have:

IfWinNotExist, ahk_exe photoscan.exe {     Run, "C:Program FilesAgisoftPhotoScan Prophotoscan.exe" } sleep, 200 

Which is set to start/launch the application if it is not running. Then a sleep to allow two tenths of a second for it to load (which is probably too small).

Instead of just a ‘sleep’ you have to ‘WinWait’ or ‘WinWaitActive’, found at this link: https://autohotkey.com/docs/commands/WinWaitActive.htm

Like this sample:

Run, "C:Program FilesAgisoftPhotoScan Prophotoscan.exe" WinWaitActive, ahk_exe photoscan.exe, , 2 if ErrorLevel {     MsgBox, WinWait timed out.     return } else     WinMinimize  ; minimize the window found by WinWaitActive. 

You may also have to use the window inspector to get the true name of the window/application/process name.

</div
 
 

Связанный проблема

-2  Ошибка «Неизвестный URL Тип: ошибка URLOPEN» в Python3  ( Error unknown url type urlopen error in python3 ) 
Это мой код, я хочу извлечь «заголовок» в сети от URL, который пользовательских входов, но не работает. <код> import re import urllib.request u...

0  Python / Subprocess: чтение вывода из пакетного файла не удается  ( Python subprocess reading output from batch file fails ) 
Позвольте мне объяснить проблему: у меня есть пакетный файл, который требует права администратора. И я хочу начать этот пакетный файл из Python, поэтому я сде...

4  Есть ли способ опросить дескриптор файлов, возвращенный из подпроцесс  ( Is there a way to poll a file handle returned from subprocess popen ) 
сказать, я пишу это: <код> from subprocessing import Popen, STDOUT, PIPE p = Popen(["myproc"], stderr=STDOUT, stdout=PIPE) Теперь, если я сделаю <код>...

43  Как порождать параллельные дочерние процессы на многопроцессорной системе?  ( How to spawn parallel child processes on a multi processor system ) 
У меня есть сценарий Python, который я хочу использовать в качестве контроллера к другому сценарию Python. У меня есть сервер с 64 процессорами, поэтому хочу ...

4  Вызов подпроцесса в скрипте с помощью MPI4PY  ( Calling a subprocess within a script using mpi4py ) 
У меня проблемы с возможностью вызова внешней программы из моего сценария Python, в котором я хочу использовать MPI4PY для распространения рабочей нагрузки ср...

295  Как я передаю строку в подпроцесс .pen (используя аргумент stdin)?  ( How do i pass a string into subprocess popen using the stdin argument ) 
Если я сделаю следующее: <код> import subprocess from cStringIO import StringIO subprocess.Popen(['grep','f'],stdout=subprocess.PIPE,stdin=StringIO('one two...

2  подмодул .POPEN отказывается запускать команду, хотя OS.System работает нормально  ( Submodules popen refuses to run a command even though os system works fine ) 
Всякий раз, когда я запускаю этот скрипт: <код> gcalctool0 Я постоянно получаю эту ошибку: <код> gcalctool1 Тем не менее, <код> gcalctool2 определе...

0  Как я могу использовать эту тестовую конструкцию Bash в Python?  ( How can i use this bash test construct in python ) 
У меня есть фрагмент Bash, я хотел бы портить в Python. Он находит, где находится SVN и независимо от того, исполняется ли он исполняемым. <код> SVN=`which ...

1  «Невозможно связать исполняемый файл» с помощью QPYthon (Android)  ( Cannot link executable error with qpython android ) 
Я пытаюсь построить простую Telegram Bot Для начала и остановки старого устройства Samsung как камера безопасности. Все хорошо через ssh, поэтому вовлечен...

0  Есть ли лучший способ извлечь строки из труб Python Subprocess с Unicode_Literals?  ( Is there a better way to retrieve strings from python subprocess pipes with unic ) 
Другой вопрос посмотрел на то, как трубовые байтовые строки на подпроцесс. Распостен на stdin при использовании Unicode_Lierterals. Как исправить кодировку м...

0  Как получить только одну конкретную строку от продукции подпроцесса  ( How to get only one specific line from subprocess output ) 
Я знаю, как искать, если конкретное слово существует в выходе подпроцесса. Но как я могу распечатать только одну конкретную строку, если я знаю, что эта строк...

-2  Multi Commands с Python  ( Multi commands with python ) 
Я хочу активировать виртуальную среду с помощью Python, затем запустите несколько команд, такие как (PIP Установка требований. atxt). Я хочу работать следующи...

5  Как зафиксировать кодировку переноса Python Subprocess на Unicode_Lierterals?  ( How to fix an encoding migrating python subprocess to unicode literals ) 
Мы готовимся перейти к Python 3.4 и добавлено Unicode_Lierterals. Наш код широко опирается на трубопроводу к / от внешних утилит с использованием модуля подпр...

20  Сообщение о захвате «Ошибка сегментации» для разбитого подпроцесса: Нет OUT и ERR после вызова для связи ()  ( Capture segmentation fault message for a crashed subprocess no out and err af ) 
У меня есть проблемы с использованием модуля подпроцесса для получения вывода разбитых программ. Я использую Python2.7 и подпроцесс, чтобы вызвать программу со...

0  Ошибка синтаксиса Python с подпроцессором  ( Python syntax error with subprocess poll ) 
Я столкнулся с этой проблемой сегодня и удалось повторить его с этим небольшим заглушкой скрипта, бежать с Python 2.7.6 на машине Win7x64, но проблема придума...

Связанный проблема

-2  Ошибка «Неизвестный URL Тип: ошибка URLOPEN» в Python3 
0  Python / Subprocess: чтение вывода из пакетного файла не удается 
4  Есть ли способ опросить дескриптор файлов, возвращенный из подпроцесс 
43  Как порождать параллельные дочерние процессы на многопроцессорной системе? 
4  Вызов подпроцесса в скрипте с помощью MPI4PY 
295  Как я передаю строку в подпроцесс .pen (используя аргумент stdin)? 
2  подмодул .POPEN отказывается запускать команду, хотя OS.System работает нормально 
0  Как я могу использовать эту тестовую конструкцию Bash в Python? 
1  «Невозможно связать исполняемый файл» с помощью QPYthon (Android) 
0  Есть ли лучший способ извлечь строки из труб Python Subprocess с Unicode_Literals? 
0  Как получить только одну конкретную строку от продукции подпроцесса 
-2  Multi Commands с Python 
5  Как зафиксировать кодировку переноса Python Subprocess на Unicode_Lierterals? 
20  Сообщение о захвате «Ошибка сегментации» для разбитого подпроцесса: Нет OUT и ERR после вызова для связи () 
0  Ошибка синтаксиса Python с подпроцессором