Что нового

Перехват команд

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
Доброго времени суток. Пробую перехватить все команды, которые выполняет одна небольшая программка в командной строке. Но у меня получается только вывести в консоль результат работы этой программы. А нужно узнать, что за команды она посылает.
Возможно поможет мой вариант:
Код:
#include <AutoItConstants.au3>
Global $iPID = Run("путь к программе\программа.exe","", @SW_SHOW, $STDOUT_CHILD)
ProcessWaitClose($iPID)
Local $ScreenOutput = StdoutRead($iPID)
ConsoleWrite($ScreenOutput & @CRLF)
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$s_Read = ''
		$i_PID = Run(@ComSpec & 'ipconfig /C ', '', @SW_HIDE, 6)
		While 1
			$s_Read &= StdoutRead($i_PID)
			If @error Then ExitLoop
			Sleep(1)
		WEnd
		MsgBox(32,'',$s_Read)
 
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
В таком виде не работает. Для проверки пробовал подменить на такой вариант:
Код:
$i_PID = Run(@ComSpec & " /k help | more", '', @SW_SHOW, 6)

Так выводит инфу. Но это такой же перехват результата, как и у меня. Не понятно, правда, почему в вашей версии ничего не перехватывает...

Видимо нужно было подробней описать. Пробую перехватить какие команды посылает вот эта небольшая прожка http://vlo.name:3000/tmph/smi_nvme_flash_id.rar
В ней есть всего одно нажатие клавиши - выбор диска. А вот что она делает дальше? Но результат получается красивый, много инфы по диску
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
конечно не работает, ибо неверная последовательность
нужно так
Код:
$i_PID = Run(@ComSpec & ' /C ipconfig', '', @SW_HIDE, 6)
 
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
Круто ) работает ) блин, не додумался, ведь в примере со справки и правда сперва стоит слэш, а уже потом все остальное.
Но в любом случае это не совсем то, что мне нужно. Все эти "функции" выводят результаты выполнения команд другой программы. А мне нужно перехватить то, что эта другая программа задействует, какие команды она посылает, чтобы получить такой результат. В посте выше я дал пример на маленькую прожку. Пробую понять, что она делает двумя способами: перехватить команды и раскомпилировать exe.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
никак.
просто используй для получения инфы. хотя, эта программа у меня выдает ошибку
FID data unavailable(0) - possible incompatible nvme driver
как я понял, программа работает с drive.inf, считывая из него данные
 
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
эта программа у меня выдает ошибку
Нет, она под другой контроллер заточена. У этого автора под каждый контроллер своя прожка небольшая, аналогичная по смыслу и рузельтатам
как я понял, программа работает с drive.inf, считывая из него данные
Вряд ли, потому что она четко показывает смарт, температуру, записанные/прочтенные объемы инфы и другие данные, которые постоянно меняются.
 
Верх