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

> Внимание!

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

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


Пионер
**

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

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


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


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


Гость






Установил себе наконец-то SharpDevelop, написал так:

      void getActControl(IntPtr myWnd)
{
while(myWnd != IntPtr.Zero)
{
uint otherPID = 0;
uint otherTID = NativeMethods.GetWindowThreadProcessId(myWnd, out otherPID);

NativeMethods.AttachThreadInput(NativeMethods.GetCurrentThreadId(), otherTID, true);
IntPtr myFocused = NativeMethods.GetFocus();
NativeMethods.AttachThreadInput(NativeMethods.GetCurrentThreadId(), otherTID, false);

st += "Handle = " + myWnd.ToString() + " (Focused: " + myFocused.ToString() + ") \n";
getActControl(NativeMethods.GetWindow(myWnd, 5)); // 5 = GW_CHILD

myWnd = NativeMethods.GetWindow(myWnd, 2); // 2 = GW_HWNDNEXT
}
}

// Вызываю так:
string st = "";
IntPtr actWin = NativeMethods.GetForegroundWindow();
st += "** Handle: " + actWin.ToString() + "\n";
getActControl(NativeMethods.GetWindow(actWin, 5)); // 5 = GW_CHILD

foreach(string ss in st.Split('\n')) {
listBox1.Items.Add(ss);
}
, ни в случае активного NotePad-а, ни в случае активного Word-а не получаю нулей в myFocused...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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


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

 



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