День добрый.
Есть несколько скриптов с наборами хоткеев для разных приложений. Хочется сделать мастер скрипт, который бы получал нотификацию о смене активного окна, и в зависимости от того какое окно стало активным, делал переключение между наборами хоткеев. Есть ли подходящие апи, или нужно по таймеру проверять какое окно активно?
Спасибо.
[решено] Получение нотификации об изменении активного окна
-
Creat0R
Re: [решено] Получение нотификации об изменении активного окна
Хук отлавливания активного окна:
Код:
Код:
Код: Выделить всё
#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: [решено] Получение нотификации об изменении активного окна
Creat0R,
У меня на Win7x86 Ваш код не работает.
$wParam возвращает только HSHELL_WINDOWDESTROYED (0x00000002) и HSHELL_REDRAW (0x00000006).
Разобрался. У меня работает скрипт, который создает скрытые окна IE. Если его отключить, то Ваш код отлавливает активные окна, если скрипт работает, то нет. Почему? Не понятно.
У меня на Win7x86 Ваш код не работает.
$wParam возвращает только HSHELL_WINDOWDESTROYED (0x00000002) и HSHELL_REDRAW (0x00000006).
Разобрался. У меня работает скрипт, который создает скрытые окна IE. Если его отключить, то Ваш код отлавливает активные окна, если скрипт работает, то нет. Почему? Не понятно.
-
Creat0R
Re: [решено] Получение нотификации об изменении активного окна
Цитата madmasles:
У меня работает скрипт, который создает скрытые окна IE
Возможно он как то использует хук...
Можно на него посмотреть?
У меня работает скрипт, который создает скрытые окна IE
[решено] Получение нотификации об изменении активного окна
Возможно он как то использует хук...
Можно на него посмотреть?
-
madmasles
Re: [решено] Получение нотификации об изменении активного окна
Цитата Creat0R:
Возможно он как то использует хук...
Нет, он не использует хук, он использует полноэкранный режим IE. Если в Вашу функцию добавить
Код:
то все работает. (читал об этом
Возможно он как то использует хук...
[решено] Получение нотификации об изменении активного окна
Нет, он не использует хук, он использует полноэкранный режим IE. Если в Вашу функцию добавить
Код:
Код: Выделить всё
;...
Case $HSHELL_WINDOWACTIVATED, $HSHELL_RUDEAPPACTIVATED ;($HSHELL_RUDEAPPACTIVATED = 32772)
;...то все работает. (читал об этом
здесь.
)-
Creat0R
Re: [решено] Получение нотификации об изменении активного окна
Цитата madmasles:
Если в Вашу функцию добавить
Обновил свой код выше.
Если в Вашу функцию добавить
[решено] Получение нотификации об изменении активного окна
Обновил свой код выше.