andrewua12
10-06-2009, 13:31
Есть программа для получения ключей mpcs, выполняется в досовском окне, постоянно выдает сервисные сообщения.
Необходимо при определенном сообщении, ключевое слово "timeout", перезапустить программу через заданный интервал времени.
Можно "тупо" пихать консоль в файл ">>file.ext" и этот файл "терроризировать" find'ом
Можно попробовать так:
#include <Constants.au3>
Dim $foo, $line, $RunningFlag = True
HotKeySet("{ESC}", "Stoped")
While $RunningFlag
$foo = Run("mpcs-0.8k-rc13o-i386-pc-cygwin.exe", "", 1, $STDOUT_CHILD)
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
If StringInStr(OemToChar($line), "Искомая строка") Then
ProcessClose($foo)
If Not ProcessWaitClose($foo, 5) Then
MsgBox(16,"Ошибка", "Не смог завершить процесс.")
Exit(1)
EndIf
ExitLoop
EndIf
Wend
WEnd
Func Stoped()
$RunningFlag = False
EndFunc
Func OemToChar($String)
Local $pBuffer = DllStructCreate('char[' & StringLen($String)+1 & ']')
DllCall('user32.dll','none','OemToChar','str',$String,'ptr',DllStructGetPtr($pBuffer))
Return DllStructGetData($pBuffer,1)
EndFunc
andrewua12
04-07-2009, 16:09
Спасибо всем за помощь. В соседней ветке уже решено.
http://forum.oszone.net/thread-142348.html
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.