Показать полную графическую версию : Hook для перехвата keyboard.
Пытаюсь самым обычным образом перехватить сообщения с клавиатуры, однако вызова функции как таковой не происходит. Явно что-то делаю не так ;). Может кто подскажет или скинет исходник.
HHOOK hook;
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
FILE *f;
if((f=fopen("c:\\logfile.txt","a"))!=NULL)
{
fputc(MapVirtualKey(wParam,2),f);
fclose(f);
}
return CallNextHookEx(hook, code, wParam, lParam);
}
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, (HINSTANCE)NULL, GetCurrentThreadId());
return 0;
}
Я могу ошщибаться, но по-моему, что бы хук работал, ф-ия реализующая его должна быть в отдельной dll. Во всяком случае, я так делал: http://ivank.ru/trash/KeyHooker.zip
2003slon
10-02-2004, 18:17
что бы хук работал, ф-ия реализующая его должна быть в отдельной dll
C этой SetWindowsHookEx бардак какой-то... Я вообще-то пишу на Дельфях, и чего только не делал, но ничего не получилость (если кнопка нажимается, когда окно программы неактивно, возникает exeption). Народ, скиньте кто-нибудь рабочий код!
hasherfrog
11-02-2004, 09:47
Хотелось бы предупредить, что с этими самыми хуками не все так просто. Хочу поделиться опытом и немного "постращать". Когда-то я пытался написать прогу, которая следит за мышой. Несмотря на кажущуюся простоту, почему-то программа иногда сбоила. Я накачал кучу литературы и примеров (очень хороших примеров, профессионально написаных) и переписал все заново. Сбои продолжались. Тогда я попробовал потестировать и самые лучшие программы-примеры. Как я удивился (и, каюсь, развеселился) , когда и они начали сбоить. Хотя вроде бы, чего тут такого уж сложного-то?
Мораль. :) Хочешь чтобы хорошо работало, сделай сам. :) А еще лучше, сначала хорошо подумай, надо ли вообще делать? Опять KeyLogger?
Для дельфистов хороший пример тут: http://community.borland.com/article/0,1410,10323,00.html
Если же пишешь на С/С++, то естественно, Examples for using the SetWindowHookEx() function are found in the WIN32 SDK.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.