Что нового

Как получить данные из консоли?

vovsla

Осваивающий
Сообщения
607
Репутация
36
При запуске программы из Scite в нижнюю часть окна выводятся данные
Код:
#include <Constants.au3>
$STDOut=Run(@ScriptDir&'\program.exe', @ScriptDir, @SW_SHOW, $STDOUT_CHILD)
While True
    If @error Then ExitLoop
Wend

но я не могу их получить через StdoutRead и через ConsoleRead

Как мне их получить в переменную или в массив?
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#include <WinAPIEx.au3>

.......

$sResult = ""
While 1
	$sResult &= StdoutRead($STDOut)
	If @error Then 
		ExitLoop
	EndIf
WEnd
MsgBox(0, '', _WinAPI_OemToChar($sResult))
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Все, разобрался, скачал нужную библиотеку, но все так же, возвращается только одна строка, а там их полно


Добавлено:
Сообщение автоматически объединено:

полный скрипт
Код:
#include <Constants.au3>
#include <WinAPIEx.au3>

$STDOut=Run(@ScriptDir&'\program.exe', @ScriptDir, @SW_SHOW, $STDOUT_CHILD)

$STDOutR =''
While 1
    $STDOutR &= StdoutRead($STDOut)
    If @error Then ExitLoop
Wend

MsgBox(0, '', _WinAPI_OemToChar($STDOutR))
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Мой вариант:

Программа, в которой пишется консоль ("1.exe"):
Код:
For $i = 1 To 5
	ConsoleWrite('Hello World - '&$i&@CRLF)
	Sleep(500)
Next


Программа, которая получает консоль от программы "1.exe"
Код:
$PID= Run("1.exe","",@SW_SHOW,3)
$ConsoleData = ""

Do
    If StdoutRead($PID,1,True) Then
        $ConsoleData &= StdoutRead($PID)
        If @error Then ExitLoop
	EndIf
Until Not ProcessExists($PID)

MsgBox(0, '', $ConsoleData)


Взято от сюда - клик
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Получаю все ту же первую строку
Код:
#include <Constants.au3>


$STDOut=Run(@ScriptDir&'\program', @ScriptDir, @SW_SHOW, 3)

$STDOutR =''
While 1
	If StdoutRead($STDOut, 1, True) Then
		$STDOutR &= StdoutRead($STDOut)
		If @error Then ExitLoop
	EndIf
	If Not ProcessExists($STDOut) Then ExitLoop
Wend

MsgBox(0, "STDOUT read:", $STDOutR)
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
cgminer.exe, запускаю в debug mode cgminer.exe -D
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Попробуйте запустить с командной строке:
Код:
cgminer.exe 2>logfile.txt

Если создает файл (logfile.txt) с логом действий, то я думаю дальше Вы догадаетесь что можно сделать.

LOGGING

cgminer will log to stderr if it detects stderr is being redirected to a file.
To enable logging simply add 2>logfile.txt to your command line and logfile.txt
will contain the logged output at the log level you specify (normal, verbose,
debug etc.)

In other words if you would normally use:
./cgminer -o xxx -u yyy -p zzz
if you use
./cgminer -o xxx -u yyy -p zzz 2>logfile.txt
it will log to a file called logfile.txt and otherwise work the same.

Сайт CGMINER
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Я так и сделал, но думал что можно данные получить из консоли
 
Верх