Вниз
Скачать: CL | DM;

Как не пропускать сообщение к чужому приложению   Найти похожие ветки 

← →
AFROLOV   (2002-03-25 11:28) [0]

В hook я перехватываю сообщение от клавиатуры. Я могу посмотреть, что нажал user. А как сделать так, что бы нажатия некоторых клавиш (например "TAB" askii=9 ) до чужого приложения не доходили?
Заранее спасибо.


← →
Виктор Щербаков ©   (2002-03-25 11:34) [1]

GetMessage


← →
Севостьянов Игорь ©   (2002-03-25 16:39) [2]

Ну блин я шоке человек пишет что перехватывает хуком мессаги и при этом спрашивает как посмотреть, что он нажал... А что мессаги которые ты перехватываешь хуком не содержат кодов клавиатуры ? Раз перехватываешь, то можно же поставить и фильтр на то что пропускать дальше... Или как у тебя может хук работать правильно без CallNextHookEx

Я написал хук, который писал в файл все нажатые клавиши...

Вот программа, вызывающая dll и вешающая хук

program kbdsrv;
uses
Windows,
Dialogs;

const
KBDHOOKDLL = "KbdAgnt.dll";
var
hinstDLL: HINST;
hkprcKeyboard: TFNHookProc;
msg: TMsg;

begin
hinstDLL := LoadLibrary(KBDHOOKDLL);
hkprcKeyboard := GetProcAddress(hinstDLL, "KeyboardProc");
SetWindowsHookEx(WH_KEYBOARD, hkprcKeyboard, hinstDLL, 0);
repeat until not GetMessage(msg, 0, 0, 0);
end.


Как видишь все мессаги от клавиатуры передаются в мою dll
и она уже делает вот это

function KeyboardProc(hCode: Integer; vkCode: WPARAM;
ksMsgInf: LPARAM ): LRESULT;
begin
if (hCode = HC_ACTION) and
((HiWord(ksMsgInf) and KF_UP) = 0) then SaveToFile(vkCode);
Result := CallNextHookEx(hCurrentHook, hCode, vkCode, ksMsgInf);
end;



Весь код Вы получите по почте... Сколько же можно писать об одном и том ? Люди ленивые создания, не желающие искать, пробовать и читать...


← →
Севостьянов Игорь ©   (2002-03-25 16:42) [3]

Дополнение к ответу вместо SaveToFile(vkCode); используй свою фукцию или прямо там пиши
if vkCode = VK_TAB then vkCode := 0; // можно и проверить от кого сообщение идет (от какого окна)


← →
AFROLOV   (2002-03-25 16:48) [4]

Кстати с определением кодов клавиш проблем нет. Вопрос собственно был о том как не пропускать сообщения. Эту проблему полностью снимает GetMessage.
Тему можно считать полностью закрытой .
Всем большое спасибо за ответы.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
14-73374
asafr
2002-04-15 17:06
2002.05.23
Пародия на Гоголя о любимом Windows 98...


3-73038
gizar
2002-04-24 18:38
2002.05.23
Отключить юзеров от базы


6-73325
Devid
2002-03-11 18:05
2002.05.23
Помогите господа!


1-73213
kingdom
2002-05-14 18:58
2002.05.23
COM + TService


1-73099
lipskiy
2002-05-12 16:53
2002.05.23
Можно ли точно узнать момент окончания загрузки ОС?




   Наверх