|
Вопрос # 3 409/ вопрос открыт / |
|
Здравствуйте!
В программе я с помощью хука перехватываю сообщения от клавиатуры. Можно ли как-то в обработчике хука блокировать дальнейшую передачу сообщения окнам?
 |
Вопрос задал: AlexMPEI (статус: 1-ый класс)
Вопрос отправлен: 16 ноября 2009, 16:45
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 16 ноября 2009, 20:42; участников в обсуждении: 4.
|
Вадим К (статус: Академик), 16 ноября 2009, 17:04 [#1]:
просто не вызывать следующее сообщение. это конечно неверно, но...
либо заменить символ от клавиатуры на #0
Галочка "подтверждения прочтения" - вселенское зло.
|
|
AlexMPEI (статус: 1-ый класс), 16 ноября 2009, 17:21 [#2]:
function LowLevelKeyboardProc(nCode: Integer;
WParam: WPARAM; LParam: LPARAM): LRESULT stdcall;
type
PKbdDllHookStrukt = ^TKbdDllHookStrukt;
_KBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: PDWORD;
end;
TKbdDllHookStrukt = _KBDLLHOOKSTRUCT;
begin
if nCode = HC_ACTION then
Result := CallNextHookEx(hHook, nCode, WParam, LParam);
//обработка.....
end;
не совсем понимаю как это можно подменить... когда я вызвал CallNextHookEx и посмотрел что получил, сообщение сразу рассылается всем окнам.
|
|
Вадим К (статус: Академик), 16 ноября 2009, 17:29 [#3]:
ну так взять и не вызывать CallNextHookEx, хотя это и не правильно.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
AlexMPEI (статус: 1-ый класс), 16 ноября 2009, 17:45 [#4]:
да, получилось, спасибо
|
|
Егор (статус: 10-ый класс), 16 ноября 2009, 19:03 [#5]:
Вадим К: а почему неправильно?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Вадим К (статус: Академик), 16 ноября 2009, 19:13 [#6]:
потому что хуки обрабатывают последовательно. и официально, порядок не сильно определён. И последующие хуки могут рассчитывать на то, что до них дойдет управление... а оно не приходит.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Паровоз (статус: 10-ый класс), 16 ноября 2009, 20:26 [#7]:
И вообще кто-то другой может делать то же самое. Тогда ваша прога также накроется.
|
|
AlexMPEI (статус: 1-ый класс), 16 ноября 2009, 20:42 [#8]:
у меня есть всего одна прога, она работает постоянно и ничего кроме нее работать не должно. а в ней я управляю кому отдавать команды - графическому интерфейсу или элементам типа листБокс. Когда отдаю интерфейсу, листБокс не должен получить ее, даже если он в фокусе. Собственно в этом и заключалась моя проблема, т.к. до этого команду в итоге получали все
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|