musicstashall
Знающий
- Сообщения
- 322
- Репутация
- 7
Версия AutoIt: 3.3
Описание:
Мне нужно общее решение, для любых окон, любых процессов. То есть, открылось какое-то окно — я получил событие, данный скрипт имею. Теперь мне нужно точно так же получить событие, когда открываются дочерние окна, и получать имя процесса, в котором открываются эти окна. Возможно ли это реализовать??
Либо дополнить имеющуюся функцию, чтобы она отрабатывала так же и на дочерние окна. Например, открыли «сетевые подключения», определяется как explorer.exe, но если открывается свойства какого-то подключения, то скрипт этого не фиксирует, а надо.
Примечания:
Описание:
Мне нужно общее решение, для любых окон, любых процессов. То есть, открылось какое-то окно — я получил событие, данный скрипт имею. Теперь мне нужно точно так же получить событие, когда открываются дочерние окна, и получать имя процесса, в котором открываются эти окна. Возможно ли это реализовать??
Код:
Global Const $HSHELL_WINDOWCREATED = 1
Global Const $HSHELL_WINDOWACTIVATED = 4;
Global Const $HWND_MESSAGE = -3
Global $bHook = 1
$hGui = GUICreate("", 10, 10, -1, 0,-1,-1,$HWND_MESSAGE)
GUIRegisterMsg(_WinAPI_RegisterWindowMessage("SHELLHOOK"), "HookProc")
ShellHookWindow($hGui, $bHook)
Func hookproc($hwnd, $msg, $wparam, $lparam); функция отрабатывает при открытии любого окна
Switch $wparam
Case $hshell_windowcreated
$Win = _processgetname(WinGetProcess($lparam)); получаем имя процесса открытого окна.
Case $hshell_windowactivated
EndSwitch
EndFunc
;процедура перехвата дочерних окон, может быть как-то так:
Func hookproc("??????")
$Win = _processgetname(WinGetProcess($lparam)); получаем имя процесса открытого дочернего окна
EndFunc
Либо дополнить имеющуюся функцию, чтобы она отрабатывала так же и на дочерние окна. Например, открыли «сетевые подключения», определяется как explorer.exe, но если открывается свойства какого-то подключения, то скрипт этого не фиксирует, а надо.
Примечания: