|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.04.2008, 12:08 | #1 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Хук (hook) на клавиатуру
Есть вопрос по теме перехвата событий. Вот это рабочая dll работает замечательно, но вот в некоторых программах типа MSOffice клавиатура не отслеживается. Если есть мысли как исправить - поделитесь.
Сама длл (просто пример который ничего не делает) Код:
Код:
|
26.04.2008, 14:09 | #2 |
Пользователь
Регистрация: 01.02.2008
Сообщений: 44
|
в прогрммах типа MSOffice клавиатура отслеживается самой MSOffice. VBA тебе в помощь
|
26.04.2008, 14:52 | #3 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Не только офис, но и некоторые игры блокируют прерывания, думаю они их поглащают, чтобы только они могли работать "лучше всех". А это мне не подходит, да и тупо делать стандартные горячие клавиши на каждую клавишу как винамп эт не дело
|
26.04.2008, 17:36 | #4 |
Участник клуба
Регистрация: 28.11.2007
Сообщений: 1,521
|
Ты можешь заблокировать так:
Но блокируется и мышь. Недокументированная функция из User32.dll, которая блокирует ввод (мышь, клавиатуру кроме <Ctrl>+<Alt>+<Del>). При нажатии <Ctrl>+<Alt>+<Del> все разблокируется. Код:
Код:
Всегда рад помочь!
Последний раз редактировалось rpy3uH; 03.05.2008 в 20:19. |
26.04.2008, 18:33 | #5 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Вопрос в другом. Программа всякий раз должна выдавать сообщение на экран о нажатой клавиши. Но это не работает, если мы печатаем в ворде или играем в генералов и т.д. и т.п. А вот если в блокноте, паинте или просто стучим по клавиатуре всё нормалёк - работает. Пытался использовать прерывание "ДжурасикРес" но по ctrl+esc или ctrl+alt+del оно ликвидируется, если воще системный прерывальщик делать, то у меня система виснет.
|
26.04.2008, 18:44 | #6 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
eoln, поставьте хук WH_KEYBOARD_LL.
Terran, функция BlockInput давно и подробно документирована: http://msdn2.microsoft.com/en-us/lib...90(VS.85).aspx |
26.04.2008, 19:05 | #7 | |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Цитата:
{ SetWindowsHook() codes } {$EXTERNALSYM WH_MIN} WH_MIN = -1; {$EXTERNALSYM WH_MSGFILTER} WH_MSGFILTER = -1; {$EXTERNALSYM WH_JOURNALRECORD} WH_JOURNALRECORD = 0; {$EXTERNALSYM WH_JOURNALPLAYBACK} WH_JOURNALPLAYBACK = 1; {$EXTERNALSYM WH_KEYBOARD} WH_KEYBOARD = 2; {$EXTERNALSYM WH_GETMESSAGE} WH_GETMESSAGE = 3; {$EXTERNALSYM WH_CALLWNDPROC} WH_CALLWNDPROC = 4; {$EXTERNALSYM WH_CBT} WH_CBT = 5; {$EXTERNALSYM WH_SYSMSGFILTER} WH_SYSMSGFILTER = 6; {$EXTERNALSYM WH_MOUSE} WH_MOUSE = 7; {$EXTERNALSYM WH_HARDWARE} WH_HARDWARE = 8; {$EXTERNALSYM WH_DEBUG} WH_DEBUG = 9; {$EXTERNALSYM WH_SHELL} WH_SHELL = 10; {$EXTERNALSYM WH_FOREGROUNDIDLE} WH_FOREGROUNDIDLE = 11; {$EXTERNALSYM WH_CALLWNDPROCRET} WH_CALLWNDPROCRET = 12; {$EXTERNALSYM WH_MAX} WH_MAX = 12; {$EXTERNALSYM WH_MINHOOK} WH_MINHOOK = WH_MIN; {$EXTERNALSYM WH_MAXHOOK} WH_MAXHOOK = WH_MAX; Где оно описано? И чему равно его числовое значение? function SetWindowsHookEx; external user32 name 'SetWindowsHookExA'; function SetWindowsHookExA; external user32 name 'SetWindowsHookExA'; function SetWindowsHookExW; external user32 name 'SetWindowsHookExW'; |
|
26.04.2008, 19:25 | #8 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
http://msdn2.microsoft.com/en-us/library/ms644990.aspx
Код:
|
26.04.2008, 22:36 | #9 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
#if (_WIN32_WINNT >= 0x0400)
Я так полагаю что в Дельфи не покатит, но всё-равно спасибо |
26.04.2008, 22:40 | #10 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хук на клавиатуру | xshStasX | Помощь студентам | 1 | 09.08.2008 16:56 |
hook в dll? | Altera | Win Api | 3 | 09.03.2008 09:54 |
com-программа, которая блокирует клавиатуру | Белка | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 26.11.2007 14:37 |
Hook... | Roof | Общие вопросы Delphi | 5 | 06.11.2007 16:25 |
Hook off? | Сильванович Михаил | Win Api | 1 | 03.04.2007 16:25 |