IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> работа с клавиатурой, C#, MSVS08
Unknown
сообщение 16.04.2009 19:58
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 104
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Подскажите, пожалуйста, как научить программу отлавливать факт нажатия кнопок клавиатуры в окне другого приложения?
В общем нужно что-то типа клавиатурного шпиона написать...


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 20.04.2009 13:28
Сообщение #2


Гость






Ну и чего ты творишь? Я ж тебе дал ссылку на MSDN, там явно сказано:
Цитата
Return Value
The return value is the handle to the window with the keyboard focus. If the calling thread's message queue does not have an associated window with the keyboard focus, the return value is NULL.
...
Use the GetForegroundWindow function to retrieve the handle to the window with which the user is currently working. You can associate your thread's message queue with the windows owned by another thread by using the AttachThreadInput function.


Вот так это приблизительно делается на WinAPI:
// Получаем хэндл активного приложения
HWND hWnd = ::GetForegroundWindow();
DWORD myProcessId, otherProcessId;
DWORD otherThread=::GetWindowThreadProcessId(hWnd, &otherProcessId);
DWORD myThread = ::GetWindowThreadProcessId(mуWnd, &myProcessId);
// Подключаемся к другому потоку
::AttachThreadInput(myThread, otherThread, true);
// Получаем в его контексте дочернее окно с фокусом, обрабатываем его как нужно
HWND hWndOfFocused = ::GetFocus();

// И отсоединяемся от чужого процесса
::AttachThreadInput(myThread, otherThread, false);
Возможно, .NET позволяет сделать это же самое и проще...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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   Хм... Надо будет установить себе хотя бы SharpDeve...   21.04.2009 9:11
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


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.06.2025 11:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"