1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
| Unknown |
16.04.2009 19:58
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Подскажите, пожалуйста, как научить программу отлавливать факт нажатия кнопок клавиатуры в окне другого приложения?
В общем нужно что-то типа клавиатурного шпиона написать... -------------------- go ask Alice
|
![]() ![]() |
| volvo |
21.04.2009 9:11
Сообщение
#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 19:58
volvo Глобальный хук на клавиатуру?
Вот тут есть пример... 16.04.2009 21:12
Unknown Спасибо! Теперь другой вопрос: как в окно друг... 16.04.2009 22:39
volvo А оно тебе надо писать это в окно Word-а? Создать ... 16.04.2009 22:48
Unknown да, мне это нужно :)
Мне нужно написать прогу напо... 16.04.2009 23:24
volvo Ну, тогда смотри, как работать с Word-ом: Word Aut... 17.04.2009 0:10
Unknown Word - это я просто в качестве примера привел. А в... 17.04.2009 11:21
Unknown определять хэндл окна по его названию научился - f... 17.04.2009 12:31
volvo Ты правильно понимаешь... На WinAPI это делается ч... 17.04.2009 12:36
Unknown Вот спасибо! оказывается есть полно полезных ф... 17.04.2009 12:46
Unknown Гмм... GetFocus все время возвращает 0... в чем мо... 20.04.2009 13:08
volvo Ну и чего ты творишь? Я ж тебе дал ссылку на MSDN,... 20.04.2009 13:28
Unknown спасибо, попробовал сделать по шагам - споткнулся ... 21.04.2009 2:12
volvo Update: ответ на вопрос
WinForms FAQ - "// N... 21.04.2009 10:25
Гость
т.е., к примеру, поле мемо программы, написанной ... 24.04.2009 4:02
volvo Установил себе наконец-то SharpDevelop, написал та... 25.04.2009 14:08
Unknown Если я не ошибаюсь, я пробовал на ICQ...
Спасибо з... 27.04.2009 3:48![]() ![]() |
|
Текстовая версия | 8.12.2025 17:07 |