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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

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


Пионер
**

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

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


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


--------------------
go ask Alice
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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 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   Хм... Надо будет установить себе хотя бы SharpDeve…   21.04.2009 13:11
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


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

 





- Текстовая версия 11.09.2025 21:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name