Что нового

Функция перехвата дочерних окон

musicstashall

Знающий
Сообщения
322
Репутация
7
Версия AutoIt: 3.3

Описание:
Мне нужно общее решение, для любых окон, любых процессов. То есть, открылось какое-то окно — я получил событие, данный скрипт имею. Теперь мне нужно точно так же получить событие, когда открываются дочерние окна, и получать имя процесса, в котором открываются эти окна. Возможно ли это реализовать??
Код:
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, но если открывается свойства какого-то подключения, то скрипт этого не фиксирует, а надо.

Примечания:
 
Верх