HOOK & DLL & EXE
От: Sarkisov Sergei Беларусь  
Дата: 08.05.02 15:04
Оценка:
Господа, проясните пожалуйста ситуацию по поводу локальных и глобальных хуков. В литературе и в форумах пишут о том, что поставить глоб. хук можно только из DLL. Но приведённый ниже код ставит хук на клавиатуру и Beep-ает везде — это разве не глобальный хук ? (про NextWindowHook я знаю и про обмен между процессами с пом. файлмаппинга тоже)
Саму теорию я под сомнение не ставлю, просто хотелось бы понять в чём разница между указанным хуком и хуком из DLL.

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
Beep(20,20);
return 0;
}

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,NULL);
while (GetMessage(&msg,0,0,0)) {
}
return 0;
}
Re: HOOK & DLL & EXE
От: SergH Россия  
Дата: 08.05.02 15:13
Оценка:
Здравствуйте Sarkisov Sergei, Вы писали:

SS>Господа, проясните пожалуйста ситуацию по поводу локальных и глобальных хуков. В литературе и в форумах пишут о том, что поставить глоб. хук можно только из DLL. Но приведённый ниже код ставит хук на клавиатуру и Beep-ает везде — это разве не глобальный хук ? (про NextWindowHook я знаю и про обмен между процессами с пом. файлмаппинга тоже)

SS>Саму теорию я под сомнение не ставлю, просто хотелось бы понять в чём разница между указанным хуком и хуком из DLL.

SS>LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {

SS> Beep(20,20);
SS> return 0;
SS>}

SS>int APIENTRY WinMain(HINSTANCE hInstance,

SS> HINSTANCE hPrevInstance,
SS> LPSTR lpCmdLine,
SS> int nCmdShow)
SS>{
SS> MSG msg;
SS> SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,NULL);
SS> while (GetMessage(&msg,0,0,0)) {
SS> }
SS> return 0;
SS>}

А у меня не Beep-ает. Под Win XP Pro. Единственное изменение — добавил строчку #include <windows.h>. Или в этом и был секрет ?
Делай что должно, и будь что будет
Re[2]: HOOK & DLL & EXE
От: Sarkisov Sergei Беларусь  
Дата: 08.05.02 15:16
Оценка:
Здравствуйте SergH, Вы писали:

SH>А у меня не Beep-ает. Под Win XP Pro. Единственное изменение — добавил строчку #include <windows.h>. Или в этом и был секрет ?


Секрет конечно не в этом (у меня строчка #include "stdafx.h")
Может разница в windows, у меня win98 ?
Re[3]: HOOK & DLL & EXE
От: SergH Россия  
Дата: 08.05.02 15:45
Оценка:
Здравствуйте Sarkisov Sergei, Вы писали:

SS>Может разница в windows, у меня win98 ?


Дома посмотрю. Но если верить MSDN, работать и не должно. Из теории это тоже следует. Если Win 9x такое пропускает — это его глюк.
Делай что должно, и будь что будет
Re[4]: HOOK & DLL & EXE
От: Dr_Sh0ck Беларусь  
Дата: 09.05.02 02:19
Оценка:
Здравствуйте SergH, Вы писали:

SH>Дома посмотрю. Но если верить MSDN, работать и не должно. Из теории это тоже следует. Если Win 9x такое пропускает — это его глюк.


Где-то когда-то читал, что так и есть
Do not fake yourself ;)
ICQ#: 198114726
Re[5]: HOOK & DLL & EXE
От: Sarkisov Sergei Беларусь  
Дата: 10.05.02 15:50
Оценка:
Здравствуйте Dr_Sh0ck, Вы писали:

DS>Здравствуйте SergH, Вы писали:


SH>>Дома посмотрю. Но если верить MSDN, работать и не должно. Из теории это тоже следует. Если Win 9x такое пропускает — это его глюк.


DS>Где-то когда-то читал, что так и есть :


Что значит так и усть? глюк win9x или должно работать?? и почему вообще работает???
Re[3]: HOOK & DLL & EXE
От: SergH Россия  
Дата: 10.05.02 17:13
Оценка:
Здравствуйте Sarkisov Sergei, Вы писали:

SS>Может разница в windows, у меня win98 ?


Действительно, работает. Нестабильно и с побочными эффектами, но тем не менее. Странно. Кстати, если бы это работало так, как должно (т.е. работало, но KeyboardProc выполнялась бы правильно), сообщения от клавиатуры никому бы не приходили, т.к. CallNextHookEx не вызывается. А они приходят. Вобщем
Делай что должно, и будь что будет
Re[4]: HOOK & DLL & EXE
От: Sarkisov Sergei Беларусь  
Дата: 10.05.02 17:45
Оценка:
Здравствуйте SergH, Вы писали:

SH>Здравствуйте Sarkisov Sergei, Вы писали:


SS>>Может разница в windows, у меня win98 ?


SH>Действительно, работает. Нестабильно и с побочными эффектами, но тем не менее. Странно. Кстати, если бы это работало так, как должно (т.е. работало, но KeyboardProc выполнялась бы правильно), сообщения от клавиатуры никому бы не приходили, т.к. CallNextHookEx не вызывается. А они приходят. Вобщем


SegH, Я коректно прописывал return CallNextHookEx и у меня вызывалась другая ловушка (после того как отработает моя), а какие побочн. эффекты?
Re[5]: HOOK & DLL & EXE
От: SergH Россия  
Дата: 10.05.02 18:08
Оценка:
Здравствуйте Sarkisov Sergei, Вы писали:

SS>SegH, Я коректно прописывал return CallNextHookEx и у меня вызывалась другая ловушка (после того как отработает моя), а какие побочн. эффекты?


Ну я то CallNextHookEx не прописывал, запускал как есть. И все равно работало.

Побочные эффекты — сначала повис Windows Commander, потом Exel странно стал себя вести. Я списал всё на эту программку. Но вообще-то я в Win98 редко загружаюсь, может это вполне нормальные явления .

Нестабильность — не всегда пищит. Т.е. один раз не пищала. Я не долго эксперементировал, подробностей не знаю.
Делай что должно, и будь что будет
Re[6]: HOOK & DLL & EXE
От: Dr_Sh0ck Беларусь  
Дата: 12.05.02 06:09
Оценка:
Здравствуйте Sarkisov Sergei, Вы писали:

DS>>Где-то когда-то читал, что так и есть :


SS>Что значит так и усть? глюк win9x или должно работать?? и почему вообще работает???


Глюк win95
Do not fake yourself ;)
ICQ#: 198114726
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.