Подскажите, пожалуйста, как научить программу отлавливать факт нажатия кнопок клавиатуры в окне другого приложения?
В общем нужно что-то типа клавиатурного шпиона написать...
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| Unknown |
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Подскажите, пожалуйста, как научить программу отлавливать факт нажатия кнопок клавиатуры в окне другого приложения?
В общем нужно что-то типа клавиатурного шпиона написать... -------------------- go ask Alice
|
![]() ![]() |
| volvo |
Сообщение
#2
|
|
Гость |
Цитата попробовал сделать по шагам - споткнулся на GetFocus - возвращает ноль. Хм... Надо будет установить себе хотя бы SharpDevelop, посмотреть, что творится в C#, потому как приведенный мной код в C++ отрабатывает прекрасно, GetFocus получает дескриптор активного контрола, и посылка в него, скажем,::SendMessage(hWndOfFocused, WM_SETTEXT, 0,(long int)"Just a test\0");, приводит к появлению этого текста в чужом приложении... НО!!! Не везде, естественно. Универсального способа нет и вряд ли он будет, потому что это сработает только тогда, когда контрол является оконным, то есть, если у него вообще есть HWND. А если нет? А если чужое приложение рисует на канве (как это делал ICQ, например, в форме быстрого ответа. Не знаю, может сейчас уже изменили, и там тоже используются оконные компоненты?), что тогда делать будешь? Кстати, еще один способ (опять же, только для оконных контролов) - получить активное приложение через GetForegroundWindow, а потом пройтись по каждому из его дочерних окон, то есть, перебрать все суб-контролы этого приложения (удобно делается через EnumChildWindows), для каждого получать GetWindowInfo, и проверять в полученной структуре поле dwWindowStatus. Если оно == WS_ACTIVECAPTION, значит, нашел контрол, на котором фокус ввода. |
Unknown работа с клавиатурой 16.04.2009 23:58
volvo Глобальный хук на клавиатуру?
Вот тут есть пример… 17.04.2009 1:12
Unknown Спасибо! Теперь другой вопрос: как в окно друг… 17.04.2009 2:39
volvo А оно тебе надо писать это в окно Word-а? Создать … 17.04.2009 2:48
Unknown да, мне это нужно :)
Мне нужно написать прогу напо… 17.04.2009 3:24
volvo Ну, тогда смотри, как работать с Word-ом: Word Aut… 17.04.2009 4:10
Unknown Word - это я просто в качестве примера привел. А в… 17.04.2009 15:21
Unknown определять хэндл окна по его названию научился - f… 17.04.2009 16:31
volvo Ты правильно понимаешь... На WinAPI это делается ч… 17.04.2009 16:36
Unknown Вот спасибо! оказывается есть полно полезных ф… 17.04.2009 16:46
Unknown Гмм... GetFocus все время возвращает 0... в чем мо… 20.04.2009 17:08
volvo Ну и чего ты творишь? Я ж тебе дал ссылку на MSDN,… 20.04.2009 17:28
Unknown спасибо, попробовал сделать по шагам - споткнулся … 21.04.2009 6:12
volvo Update: ответ на вопрос
WinForms FAQ - "// N… 21.04.2009 14:25
Гость
т.е., к примеру, поле мемо программы, написанной … 24.04.2009 8:02
volvo Установил себе наконец-то SharpDevelop, написал та… 25.04.2009 18:08
Unknown Если я не ошибаюсь, я пробовал на ICQ...
Спасибо з… 27.04.2009 7:48![]() ![]() |
|
Текстовая версия | 24.12.2025 5:00 |