![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| puZzo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 12.3.2008 Репутация: нет Всего: нет |
Люди, помогите плиз разобраться, на пальцах, желательно по-русски=)))
Как поймать сообщение WM_INPUTLANGCHANGEREQUEST при смене раскладки не только в своем приложении.. я понимаю, что нужно ставить глобальный хук, но здесь я захожу в тупик, как это сделать..локально (в своем приложении я разобрался и сделал), а вот с dll'ой не пойму никак=(( явно не хватает знаний по этой теме.. Желательно было бы пример хорошей документации по хукам..если можно=)) |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
CodeMonkey, у нас это статья тоже есть:
http://base.vingrad.ru/view/2011-Hooks---a...tyi-realizatsii Не принципиально конечно, где брать инфу, но все не просто так это в местной базе знаний висит |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
THandle, я просто тут у вас относительно недавно, а на Королевстве уже больше года. Чьи закоулки мне больше знакомы, оттуда ссылки и кидаю ;)
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| puZzo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 12.3.2008 Репутация: нет Всего: нет |
Спасибо за доку, разобрался, поставил, заработало..вот только появилась другая проблема, при переключении активного приложения, если в нем другая раскладка, хук не срабатывает=( проверил так..в тотале стоит англ., в браузере рус. При переключении между приложениями значок раскладки меняется..а вот мой хук не срабатывает...
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Так ведь раскладка же не меняется. С чего ж ему срабатывать-то? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| puZzo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 12.3.2008 Репутация: нет Всего: нет |
Как это не меняется? Язык ввода то изменяется, и индикатор виндовый меняется..да и не только стандартный, у меня стоит панто свитчер, он тоже реагирует..уже думал отслеживать состояние окошка языка(виндовое), но отказался, у меня оно отключено=)) Я так полагаю же должна же быть гдето переменная чтоли, которая отвечает за вводимый язык...
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Да не меняется он, с чего вы это взяли? У каждой программы есть своя индивидуальная раскладка. От того, что вы сделали активной вторую программу - ни в первой программе, ни во второй раскладка не меняется. Если не понятно, то давайте посмотрим на ваш пример. Начальная позиция: в тотале - англ, в браузере - рус, и тотал активен. Вы переключаетесь на браузер. Конечная позиция: в тотале - англ, в браузере - рус, и браузер активен. Ну и где же вы увидели здесь переключение раскладки? В тотале как был англ, так и остался - нет переключения. В браузере как был рус, так и остался. Опять-таки нет переключения. Вы переключидись между приложениями, а не переключили раскладку. Чувствуете разницу?
Ну есть. Получить можно, например, GetKeyboardLayout-ом. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 3 Всего: 18 |
-------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
| puZzo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 12.3.2008 Репутация: нет Всего: нет |
CodeMonkey, спасибо, теперь понял..почти..но как тогда узнать язык ввода в текущем активном окне? хук на любое активное окно и при смене брать его язык ввода?
BaD_SeCt0R, данке=) |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |