Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.222.47] |
|
Сообщ.
#1
,
|
|
|
А как с сабжем под Виндами работать?
|
Сообщ.
#2
,
|
|
|
Никак. По-моему, там нет такого даже понятия. Есть вроде что-то похожее,
кажется, называются сообщениями, если не ошибаюсь. |
Сообщ.
#3
,
|
|
|
http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=asm;action=display;num=1017667603
|
Сообщ.
#4
,
|
|
|
Да это я читал уже да и знал.
Может я не очень правильно вопрос задал, мне интересно можно ли в Win32 так же как в Досе, на свои обратотчики событий от мыши клавы... делать т.е. нажал я на клаве букву "Ц" а мой обработчик в буфер поместил "В". |
Сообщ.
#5
,
|
|
|
Да, можно, используя хуки.
В твоем случае это хуки WH_KEYBOARD (Win32) или WH_KEYBOARD_LL (WinNT/2k). Win32 организована на сообщениях. При нажатии кнопок клавиатуры активному окну генерятся сообщения WM_KEYUP и WM_KEYDOWN. Так вот процедура хука, если она глобальная, по-простому говоря, становится фильтром между системой и любым активным окном, перехватывает эти сообщения и может что-то менять, или вовсе не пропускать... Хук WH_KEYBOARD_LL к тому же реагирует на сообщения WM_SYSKEYUP и WM_SYSKEYDOWN, то есть на все специальные клавиши и их комбинации, кроме Ctrl-Alt-Del |
Сообщ.
#6
,
|
|
|
Где про эти хуки почитать можно?
|
Сообщ.
#7
,
|
|
|
В MSDN, а также в книгах Рихтера и Питрека.
Примеры хуков на C (хотя я уже в форуме их указывал совсем недавно): http://www.sources.ru/cpp/cpp_lock_mouse_and_keyboard.shtml http://www.sources.ru/cpp/tips/system_wide_hook.shtml http://www.sources.ru/cpp/cpp_pwdspy.shtml http://support.microsoft.com/support/kb/articles/Q81/3/34.ASP |
Сообщ.
#8
,
|
|
|
Ну от чего же! Можно и прерывания перехватить. Они ж аппаратные, так что и в винде и в досе и в линухе одинаковы. Для PC-платформы. Вот только сделать это можно к сожалению только из ring0. То биш дровишки писать надо...
|
Сообщ.
#9
,
|
|
|
2 server_mouse:
Аппаратные-то они аппаратные! А вот номер прерывания тебе ведом? Какой, собственно, дескриптор IDT подменять придется? Прочитал твое сообщение, так руки и зачесались написать обработчик! Ты уж мне помоги советом, что и как! С Ring0 нет проблем, а дальше-то что? Кстати, для Win9x Ring0 для подмены обработчика не требуется (CIH как раз и использует подмену обработчика INT 3 для входа в Ring0), а для WinNT действительно драйвер придется писать. |