Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Получение нотификации об изменении активного окна

Ответить
Настройки темы
[решено] Получение нотификации об изменении активного окна

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:43, 26-06-2013

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


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

Код: Выделить весь код
#NoTrayIcon
#include <WinAPI.au3>

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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 30-06-2013 в 00:02.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:42, 26-06-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Creat0R,
У меня на Win7x86 Ваш код не работает.
$wParam возвращает только HSHELL_WINDOWDESTROYED (0x00000002) и HSHELL_REDRAW (0x00000006).

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

Последний раз редактировалось madmasles, 27-06-2013 в 06:27.


Отправлено: 06:08, 27-06-2013 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата madmasles:
У меня работает скрипт, который создает скрытые окна IE »
Возможно он как то использует хук...
Можно на него посмотреть?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 10:50, 27-06-2013 | #4


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Возможно он как то использует хук... »
Нет, он не использует хук, он использует полноэкранный режим IE. Если в Вашу функцию добавить
Код: Выделить весь код
;...
		Case $HSHELL_WINDOWACTIVATED, $HSHELL_RUDEAPPACTIVATED ;($HSHELL_RUDEAPPACTIVATED = 32772)
		;...
то все работает. (читал об этом здесь.)
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:27, 28-06-2013 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата madmasles:
Если в Вашу функцию добавить »
Обновил свой код выше.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 00:03, 30-06-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Получение нотификации об изменении активного окна

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - постоянно выбрасывает из активного окна zaipashu Программное обеспечение Windows 16 20-12-2012 17:36
Разное - Самопроизвольное отключение активного окна. terabo Microsoft Windows 2000/XP 1 17-10-2011 17:06
Интерфейс - [решено] Проблема с развертывание активного окна genkoo Microsoft Windows 7 2 29-08-2011 09:53
Интерфейс - Потеря фокуса активного окна James Marsh Microsoft Windows 2000/XP 7 10-08-2011 19:05
[решено] как узнать pid активного окна ??? shyra1976 AutoIt 7 30-06-2009 11:22




 
Переход