[решено] Получение нотификации об изменении активного окна

Ответить
Аватара пользователя
Lapa2005

[решено] Получение нотификации об изменении активного окна

Сообщение Lapa2005 »

День добрый.

Есть несколько скриптов с наборами хоткеев для разных приложений. Хочется сделать мастер скрипт, который бы получал нотификацию о смене активного окна, и в зависимости от того какое окно стало активным, делал переключение между наборами хоткеев. Есть ли подходящие апи, или нужно по таймеру проверять какое окно активно?

Спасибо.
Аватара пользователя
Creat0R

Re: [решено] Получение нотификации об изменении активного окна

Сообщение Creat0R »

Хук отлавливания активного окна:





Код:

Код: Выделить всё

#NoTrayIcon
#include 
Opt("WinWaitDelay", 0)
HotKeySet('{ESC}', '_Exit')
Global Const $HSHELL_WINDOWACTIVATED = 4
Global Const $HSHELL_RUDEAPPACTIVATED = 32772
$iMsg = _WinAPI_RegisterWindowMessage('SHELLHOOK')
GUIRegisterMsg($iMsg, 'HShellWndProc')
DllCall('user32.dll', 'int', 'RegisterShellHookWindow', 'hwnd', GUICreate(''))
While 1
    Sleep(100)
WEnd
Func _Exit()
    Exit
EndFunc
Func HShellWndProc($hWnd, $Msg, $wParam, $lParam)
    Switch $wParam
        Case $HSHELL_WINDOWACTIVATED, $HSHELL_RUDEAPPACTIVATED
            ToolTip(WinGetTitle($lParam), -1, -1, 'Active Window Title')
    EndSwitch
EndFunc
Аватара пользователя
madmasles

Re: [решено] Получение нотификации об изменении активного окна

Сообщение madmasles »

Creat0R,

У меня на Win7x86 Ваш код не работает.

$wParam
возвращает только HSHELL_WINDOWDESTROYED (0x00000002) и HSHELL_REDRAW (0x00000006).



Разобрался. У меня работает скрипт, который создает скрытые окна IE. Если его отключить, то Ваш код отлавливает активные окна, если скрипт работает, то нет. Почему? Не понятно.
Аватара пользователя
Creat0R

Re: [решено] Получение нотификации об изменении активного окна

Сообщение Creat0R »

Цитата madmasles:



У меня работает скрипт, который создает скрытые окна IE
[решено] Получение нотификации об изменении активного окна




Возможно он как то использует хук...

Можно на него посмотреть?
Аватара пользователя
madmasles

Re: [решено] Получение нотификации об изменении активного окна

Сообщение madmasles »

Цитата Creat0R:



Возможно он как то использует хук...
[решено] Получение нотификации об изменении активного окна




Нет, он не использует хук, он использует полноэкранный режим IE. Если в Вашу функцию добавить

Код:

Код: Выделить всё

;...
		Case $HSHELL_WINDOWACTIVATED, $HSHELL_RUDEAPPACTIVATED ;($HSHELL_RUDEAPPACTIVATED = 32772)
		;...

то все работает. (читал об этом
здесь.
)
Ответить

Вернуться в «AutoIt»