2016-08-08 3 views
0

У меня есть сценарий выглядит следующим образом:AutoHotKey ControlSend в скрытом ЦМД

DetectHiddenWindows, On 
Run,%comspec% /k, , hide, pid2 
WinWait, ahk_pid %pid2% 
ControlSend, ,winscp.com script="path\to\script.txt", ahk_pid %pid2% 
sleep,3000 
;-- close hidden DOS window -- 
Process, Close, %pid2% 
Process, WaitClose, %pid2% 

Но проблема иногда ControlSend работы и отправить правильные письма и иногда менять двойные столбцы выделить один, а иногда и изменить WinSCP. com to winscp> com и т. д., которые я не знаю, откуда такие письма иногда появляются. Любая идея, как исправить эту проблему и заставить ее всегда отправлять правильные буквы, потому что это действительно расстраивает меня и заставляет весь скрипт испортиться.

Большое спасибо

Макс

+0

Вместо этого кода просто использовать 'бег, winscp.com сценарий = "путь \ к \ script.txt" ,, hide' и добавить' exit' в вашем 'script.txt'. – wOxxOm

+0

Это отличное решение, но я все еще хочу определить, когда процесс завершил загрузку всех данных, чтобы продолжить сценарий. Также я являюсь любопытным человеком, который хотел бы знать, почему эта проблема возникла, если кто-то знает. Благодарю. –

+0

Так просто добавьте переменную 'pid' и используйте' process, waitclose' именно так, как вы уже имеете. – wOxxOm

ответ

0
DetectHiddenWindows, on 

Run, winscp.com script="path\to\script.txt", , hide, pid2 

Sleep 6000 

Process, close, %pid2% 
Process, WaitClose, %pid2% 

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

Примечание: я мог бы использовать RunWait с командой/c (которая заменила команду спящего режима), чтобы суммировать весь сценарий, представленный выше, но я боялся, что он все еще дает ту же проблему, о которой я упоминал выше, поэтому я предпочитаю просто использовать run run и процесс закрытия и команды WaitClose.

Макс