Подскажите, пожалуйста, как научить программу отлавливать факт нажатия кнопок клавиатуры в окне другого приложения?
В общем нужно что-то типа клавиатурного шпиона написать...
работа с клавиатурой, C#, MSVS08 |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
работа с клавиатурой, C#, MSVS08 |
Unknown |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Подскажите, пожалуйста, как научить программу отлавливать факт нажатия кнопок клавиатуры в окне другого приложения?
В общем нужно что-то типа клавиатурного шпиона написать... -------------------- go ask Alice
|
Unknown |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 104 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
спасибо, попробовал сделать по шагам - споткнулся на GetFocus - возвращает ноль.
winH = GetForegroundWindow(); В чем может быть дело? Пробовал сделать по-другому: через SendKeys.Send, но возникла проблема с раскладками - чтобы вывести транслитированный текст с помощью Send, нужно сменить раскладку в окне активного приложения - никак не могу разобраться, как это сделать! for (int i = 0; i < buf.Count; i++) Но, видимо, LoadKeyboardLayout меняет раскладку только в моей программе... пробовал подключиться к потоку другого приложения - не помогло. Обойтись без раскладок, в принципе, можно - используя SendMessage: SendMessage(txtbox, WM_SETFOCUS, nul, nul); Но тут надо определить хэндл поля ввода txtbox. txtbox = FindWindowEx(winH, IntPtr.Zero, "Edit", null); Это работает для NotePad'а, а универсальный способ есть? -------------------- go ask Alice
|
Текстовая версия | 26.05.2024 6:07 |