Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: CL | DM;

Вниз

особенности HOOK-ов в MDI приложениях   Найти похожие ветки 

 
Dennisius   (2004-05-17 09:37) [0]

Здорово, здесь много было написано, сказано, про глобальные HOOK-и. Я сталкнулся вот с такой ситуацией. в MDI приложении
точнее в его DLL создается глобальный HOOK :


function Key_Hook(Code: integer; wParam: word; lParam: Longint): Longint; stdcall;
begin
 if Code >= 0 then
 begin
  if (lParam and $40000000 = 0) and (wParam=hide_key) then
   SendMessage(SC_H, wm_readkb, wParam, lParam);
  Result:=0;
 end
              else
 Result := CallNextHookEx(HookHandle,Code, wParam, lParam);
end;

procedure LocalExitProc; far;
begin
 if HookHandle<>0 then
 begin
   UnhookWindowsHookEx(HookHandle);
   ExitProc := SaveExitProc;
 end;
end;

procedure Init_Hook;
begin
HookHandle := SetWindowsHookEx(wh_Keyboard, @Key_Hook, HInstance, 0);
if (HookHandle <> 0) then
begin
 SaveExitProc := ExitProc;
 ExitProc := @LocalExitProc;
end;
end;


Но он перехватывает только wh_Keyboard только когда приложение
находится в Фокусе. Если фокус переходит на другое предложение
то Hook не пашет. Можете объяснить в чем дело. Заранее Спасибо


 
Игорь Шевченко ©   (2004-05-17 10:22) [1]

Статью по хукам читал ?


 
Dennisius   (2004-05-17 10:49) [2]

-> Статью по хукам читал
На этом сайте нет, щас почитаем, только не говорите что
HOOK в MDI приложениях не пашет .....


 
Dennisius   (2004-05-17 10:53) [3]

Просмотрел статью по реализации HOOK-сов что то там нечего нету про MDI приложения


 
Игорь Шевченко ©   (2004-05-17 11:20) [4]

А какая разница, MDI или не MDI ?
Вот, например, Spy++ является MDI приложением, а хуки там прекрасно работают.


 
Digitman ©   (2004-05-17 11:26) [5]


> что то там нечего нету про MDI приложения


и не будет

потому что MDI-приложение - такое же равноправное GUI-приложение, как и все прочие GUI-приложения

когда идет речь о глоб.хуках, то речь идет именно о GUI-приложениях ... а уж MDI или не MDI - совершенно индифферентно


 
Dennisius   (2004-05-17 16:04) [6]


> потому что MDI-приложение - такое же равноправное GUI-приложение,
> как и все прочие GUI-приложения
>
> когда идет речь о глоб.хуках, то речь идет именно о GUI-приложениях
> ... а уж MDI или не MDI - совершенно индифферентно


> А какая разница, MDI или не MDI ?
> Вот, например, Spy++ является MDI приложением, а хуки там
> прекрасно работают


Я писал пару подобных програм и выше приведенный код взят из одной из них, где он прекрасно работает как глобальный HOOK,
в этом и весь прикол, программа обладала GUI интерфейсом.
Теперь я копирую этот код в MDI-приложение и он работает только как HOOK процесса этого приложения, поэтому то я и решил что вся проблема в MDI-технологии.
Если в нем есть ошибка прошу помочь её найти.



Страницы: 1 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-1086765535
xman
2004-06-09 11:18
2004.06.27
ASM


4-1084854915
Глеб
2004-05-18 08:35
2004.06.27
Спрятать в системный трей


1-1086978895
ThermiT
2004-06-11 22:34
2004.06.27
WordDocument Выравнивание в таблице


3-1085861638
Karburator
2004-05-30 00:13
2004.06.27
соединение строк в FB1.5


14-1086576248
Думкин
2004-06-07 06:44
2004.06.27
С днем рождения! 7 июня