Главная страница
    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.006 c
3-73022
Леонид
2002-04-24 11:34
2002.05.23
Сумма нарастающим итогом в DBGrid


3-73083
Sirus
2002-04-26 14:22
2002.05.23
Можно ли собрать одним SQL запросом данные из разных баз


4-73459
lipskiy
2002-03-24 00:42
2002.05.23
Как получить сообщение копирования в буфер любого приложени? Пример из FAQ не работает.


4-73447
Danila
2002-03-21 23:06
2002.05.23
Как получить Handle нужного мне окна


14-73375
VCL
2002-04-15 22:12
2002.05.23
Вот...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский