Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


видно, это особенности приложения, но оно не дает взаимодействовать с собой при вызове из скрипта перенаправленными потоками, при первом же приглашении на ввод данных закрывается. вот макет gui, может кто сможет разобраться, так хотя бы GUI не надо будет делать
Код: Выделить весь код
; Demonstrates StdoutRead()
#include <Constants.au3>
#include <Encoding.au3>
#include <GUIConstantsEx.au3>
$myapp = 'gnugo'
$hGUI = GUICreate('My Apps output stream', 500, 200)
$hEditOut = GUICtrlCreateEdit('', 10, 10, 235, 150)
$hEditIn = GUICtrlCreateEdit('', 255, 10, 235, 150)
$hButtonStart = GUICtrlCreateButton('Start', 10, 170, 150, 20)
$hButtonSend = GUICtrlCreateButton('Send comm', 175, 170, 150, 20)
$hButtonStop = GUICtrlCreateButton('Stop', 340, 170, 150, 20)
GUISetState()

Do
	$msg = GUIGetMsg()
	Switch $msg
		 Case $hButtonStart
			Local $pid = Run($myapp, @ScriptDir, @SW_HIDE, $STDOUT_CHILD)
			GUICtrlSetData($hEditOut, '')
			GUICtrlSetState($hButtonStart, $GUI_DISABLE)
			_OutWait()
		Case $hButtonSend
			StdInWrite($pid, GUICtrlRead($hEditIn) & @CRLF)
			GUICtrlSetData($hEditIn, '')
			_OutWait()
	EndSwitch
Until $msg = $GUI_EVENT_CLOSE

Func _OutWait()
	While ProcessExists($pid)
		$msg = GUIGetMsg()
		$line = StdoutRead($pid)
		If $msg = $hButtonStop Then
			ProcessClose($pid)
			GUICtrlSetData($hEditOut, GUICtrlRead($hEditOut) & '-------------- Stopped -----------------')
			GUICtrlSetState($hButtonStart, $GUI_ENABLE)
			ExitLoop
		EndIf
		If $line Then GUICtrlSetData($hEditOut, GUICtrlRead($hEditOut) & _Encoding_OEM2ANSI($line))
		If StringRegExp($line, '\(\d\):') Then ExitLoop
	Wend
EndFunc

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Последний раз редактировалось kaster, 17-04-2011 в 22:31.


Отправлено: 22:25, 17-04-2011 | #4