Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
1-73193
tovSuhov
2002-05-09 15:01
2002.05.23
TEdit в ActiveX форме...


7-73417
ATLANTIDO
2002-02-21 23:44
2002.05.23
BIOS-дисковаод


3-73067
СергейКнязев
2002-04-25 13:35
2002.05.23
Как программно определить стоит ли на компе BDE


1-73305
Servis
2002-05-11 22:14
2002.05.23
О формах в DLL


1-73183
Катерина
2002-05-14 10:54
2002.05.23
Заголовок окна в ShowMessage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский