rpgeha
Новичок
- Сообщения
- 10
- Репутация
- 0
Всем привет. Есть программа - майнер "MinerGate-cli-4.04-win32", она запускается бат файлом с указание параметров. Мне нужно как-то логировать её работу.
Это содержимое бат файла для запуска майнера.
После запуска батника происходит запуск майнера, появляется консоль и далее в ней выводится информация. Информация выводится динамически, почти каждую секунду новая строка.
Как сделать так, чтобы то что выводится в cmd перенаправлялось в перемененную autoit или записывалось сразу в txt?
Пробовал реализовать при помощи таких команд:
StdoutRead почему-то возвращает - ничего. Весь день пробую различные вариации, но никак не могу выхватить этот текст из cmd(
Нашел код на форуме с похожей проблемой и тоже про майнер, пробовал через него перехватить, но все равно тщетно.
В чем может быть проблема, что читать, где копать? Подскажите пожалуйста
Это содержимое бат файла для запуска майнера.
После запуска батника происходит запуск майнера, появляется консоль и далее в ней выводится информация. Информация выводится динамически, почти каждую секунду новая строка.
Как сделать так, чтобы то что выводится в cmd перенаправлялось в перемененную autoit или записывалось сразу в txt?
Пробовал реализовать при помощи таких команд:
Код:
$MinerStart = Run(@ComSpec & 'MinerGate-cli-4.04-win32.exe -user [email protected] -xmr 2','' , @SW_HIDE, $STDERR_MERGED)
ConsoleWrite(StdoutRead($MinerStart))
StdoutRead почему-то возвращает - ничего. Весь день пробую различные вариации, но никак не могу выхватить этот текст из cmd(
Нашел код на форуме с похожей проблемой и тоже про майнер, пробовал через него перехватить, но все равно тщетно.
Код:
;#Include <Update_Ex.au3>
#include <Date.au3>
;#include <IE_new.au3>
#Include <WinAPIEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <String.au3>
#Include <WinAPI.au3>
#include <array.au3>
#include <Misc.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <GuiToolbar.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#Include <GUIEdit.au3>
#Include <GUISlider.au3>
#Include <File.au3>
#include <Constants.au3>
#include <ComboConstants.au3>
#include <TabConstants.au3>
#include <MenuConstants.au3>
#include <Encoding.au3>
#include <Process.au3>
#RequireAdmin
;FileChangeDir(@HomeDrive & "\cgminer")
;Авто Обновление
$Current_Version = "1.1.6"
;_StartCheckForUpdate("url",$Current_Version,True)
;~ Конец автообновления
Global $wintitle = "[CLASS:ConsoleWindowClass]", $fInterrupt = 0, $Log, $CountWile = 0
;################################ ГУИ #############################
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("MineController - " & $Current_Version, 653, 392, Default, Default)
GUISetBkColor(0x808080)
$Label2 = GUICtrlCreateLabel("Информация", 9, 8, 75, 19)
GUICtrlSetColor(-1, 0xFFFFFF)
$InfoD = GUICtrlCreateEdit("", 8, 26, 633, 70, BitOR($ES_READONLY,$ES_WANTRETURN,$WS_BORDER), 0)
$Label1 = GUICtrlCreateLabel("Основные Действия", 9, 105, 112, 19)
GUICtrlSetColor(-1, 0xFFFFFF)
$Edit1 = GUICtrlCreateEdit("", 8, 122, 633, 70, $ES_READONLY)
GUICtrlSetData(-1, "Программа запущена")
$Group1 = GUICtrlCreateGroup(" Лог ", 8, 200, 633, 185, BitOR($ES_READONLY,$GUI_SS_DEFAULT_GROUP,$WS_CLIPSIBLINGS))
GUICtrlSetColor(-1, 0xFFFFFF)
$Edith = GUICtrlCreateEdit("", 16, 217, 617, 158, BitOR($ES_READONLY,$ES_AUTOVSCROLL,$WS_VSCROLL,$ES_NOHIDESEL,$ES_WANTRETURN))
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUIRegisterMsg($WM_SYSCOMMAND, 'WM_SYSCOMMAND')
GUIRegisterMsg($WM_COMMAND, '_WM_COMMAND')
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;_конец ГУИ
$MinerStart = Run(@ComSpec & 'minergate-cli -user [email protected] -xmr 2','' , @SW_HIDE, $STDERR_MERGED)
While 1
_ReadCMData ($MinerStart)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Sleep(100)
WEnd
;###################################### Функции ######################################
;*=============================================== Считывание данных
Func _ReadCMData ($target)
If $fInterrupt <> 0 Then Return
Local $data = ''
$data &= StdoutRead($target)
If @error Then Return
Sleep(10)
if $data <> "" Then
_Added($Edith, _Encoding_OEM2ANSI($data), 150)
EndIf
EndFunc
;*=============================================== Запись действий
Func _Added($iEdit, $sNewString, $iK)
GUICtrlSetData($Edith, $sNewString & @CRLF & StringRegExpReplace(GUICtrlRead($Edith), '(?s)((?:.*?\r\n){'&$iK&'})(.*)', '\1'))
EndFunc
;*=============================================== SLEEP
Func _SleepEx($iDelay) ;~ Sleep модификация
If $fInterrupt <> 0 Then Return True
Local $iBegin = TimerInit()
Do
Sleep(50)
If $fInterrupt Then
Return True
EndIf
Until TimerDiff($iBegin) > $iDelay
Return False
EndFunc
;*=============================================== Выход
Func WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nID = BitAND($wParam, 0xFFFF)
If $nID == $SC_CLOSE Then
If ProcessExists("minergate-cli") Then ProcessClose("minergate-cli")
ProcessWaitClose ("minergate-cli")
WinClose($wintitle)
Exit
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_SYSCOMMAND
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)
Switch $hWnd
Case $wintitle
Switch $nNotifyCode
Case $BN_CLICKED
Switch $nID
Case $SendButton
$fInterrupt = 1
EndSwitch
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
В чем может быть проблема, что читать, где копать? Подскажите пожалуйста