Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2008, 13:12   #1
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию Перестаёт работать Hook

Проблема такая запускаю Hook


Код:
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
всё работает замечательно
НО после нажатия Alt-Ctrl-Del
обращение к @HookProc уже не происходит

при повторном
Код:
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
работоспособность восстанавливается

как отследить что Hook умер и его надо перезапустить?
Comer_Jus вне форума Ответить с цитированием
Старый 22.05.2008, 13:23   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Почему Вы не хотите читать документацию?....
http://msdn.microsoft.com/en-us/libr...83(VS.85).aspx
Цитата:
An application that has installed a JournalRecordProc hook procedure should watch for the VK_CANCEL virtual key code (which is implemented as the CTRL+BREAK key combination on most keyboards). This virtual key code should be interpreted by the application as a signal that the user wishes to stop journal recording. The application should respond by ending the recording sequence and removing the JournalRecordProc hook procedure. Removal is important. It prevents a journaling application from locking up the system by hanging inside a hook procedure.

This role as a signal to stop journal recording means that a CTRL+BREAK key combination cannot itself be recorded. Since the CTRL+C key combination has no such role as a journaling signal, it can be recorded. There are two other key combinations that cannot be recorded: CTRL+ESC and CTRL+ALT+DEL. Those two key combinations cause the system to stop all journaling activities (record or playback), remove all journaling hooks, and post a WM_CANCELJOURNAL message to the journaling application.
B_N вне форума Ответить с цитированием
Старый 26.05.2008, 15:58   #3
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

Function TMain.HookProc(Code: Integer; WParam: Word; LParam: Longint): Longint; stdcall;
Var Msg:PEVENTMSG;
Begin
if Code <0 Then Result := CallNextHookEx(FHookHandle, Code, WParam, LParam)
Else
Begin
Result:=0;
Msg :=Pointer(LParam);

If (msg.message=WM_CANCELJOURNAL) then main.Caption:='OP'; //:=SetWindowsHookEx(WH_JOURNALRECORD , @FThunk, HInstance, 0);

If (Msg.Message = WM_LBUTTONDOWN) then //And HookEnable Then
Begin
main.caption:=Inttostr(random(100)) ;
End;
End;
End;
Comer_Jus вне форума Ответить с цитированием
Старый 26.05.2008, 15:58   #4
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

ой не то щаз исправлю
Comer_Jus вне форума Ответить с цитированием
Старый 26.05.2008, 16:02   #5
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

Код:
Function TMain.HookProc(Code: Integer; WParam: Word; LParam: Longint): Longint; stdcall;
  Var Msg:PEVENTMSG;
  Begin
  if Code <0 Then Result := CallNextHookEx(FHookHandle, Code, WParam, LParam)
  Else
   Begin
     Result:=0;
     Msg   :=Pointer(LParam);

     If (msg.message=WM_CANCELJOURNAL) then HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
   End;
 End;
не спасает по Ctrl/Esc Hook умирает
кто смог победить?
Comer_Jus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
hook в dll? Altera Win Api 3 09.03.2008 09:54
DirectX 8.1 hook delphi_beginner Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 15.11.2007 21:03
Hook... Roof Общие вопросы Delphi 5 06.11.2007 16:25
Hook off? Сильванович Михаил Win Api 1 03.04.2007 16:25