Что нового

Управление скрытым окном

F9

Новичок
Сообщения
71
Репутация
2
Добрый день!
Прошу помощи, не могу найти метод работы со скрытым окном.
WinWaitActive не находит скрытых ключем @SW_HIDE окон. может использовать ControlSend - только не очень понятно какой ContolID взять.
Например, необходимо запустить командную строку и написать что-либо в ней, при этом не выдавая свою дейтельность:

Код:
Run(@ComSpec,@SW_HIDE)
Send("net send 192.168.1.11 Test_Message" &@CR)

Данный скрипт работает, если в этот момент пользователь ничем не занят, по счастливому стечению обстоятельств всегда вероятно что кто-то набирает текст, и тут тебе : "net send 192.168.1.11 Test_Message"

Код:
Run(@ComSpec,@SW_HIDE)
WinWaitActive("[class:ConsoleWindowClass]")
ControlSend(@WindowsDir & "system32\cmd.exe", "", "", "net send 192.168.1.11 Test_Message" &@CR)

скрипт зависает в ожидании окна с неизвестым ControlID и т.п.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
F9 [?]
запустить командную строку и написать что-либо в ней, при этом не выдавая свою дейтельность
Код:
Run(@ComSpec, "", @SW_HIDE)
WinWait("[class:ConsoleWindowClass]")
ControlSend("[class:ConsoleWindowClass]", "", "", "dir{enter}")
Sleep(1000)
WinSetState("[class:ConsoleWindowClass]", "", @SW_SHOW)


А следующим вопросом будет "как прочитать результат" ? :smile:
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
2
InnI сказал(а):
А следующим вопросом будет "как прочитать результат" ? :smile:

да не, результат не нужен)
Вопрос - а что если будет несколько открытых окон типа CMD.exe (или процессов, запущенных и от имени сисетмы, и от текущего пользователя ?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
F9 [?]
если будет несколько открытых окон
В данном примере будет "найдено" окно первое в списке существующих.
Если вас не интересует результат выполнения, то проще сделать так
Код:
Run(@ComSpec & " /c net send 192.168.1.11 Test_Message", "", @SW_HIDE)
 
Верх