![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
особенности HOOK-ов в MDI приложениях [D6, Win95/98, WinME, Win2k, WinXP]
Dennisius © (2004-05-17 09:37:00)Здорово, здесь много было написано, сказано, про глобальные 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 не пашет. Можете объяснить в чем дело. Заранее Спасибо
Dennisius (2004-05-17 16:04:00) [1]
> потому что MDI-приложение - такое же равноправное GUI-приложение,
> как и все прочие GUI-приложения
>
> когда идет речь о глоб.хуках, то речь идет именно о GUI-приложениях
> ... а уж MDI или не MDI - совершенно индифферентно
> А какая разница, MDI или не MDI ?
> Вот, например, Spy++ является MDI приложением, а хуки там
> прекрасно работают
Я писал пару подобных програм и выше приведенный код взят из одной из них, где он прекрасно работает как глобальный HOOK,
в этом и весь прикол, программа обладала GUI интерфейсом.
Теперь я копирую этот код в MDI-приложение и он работает только как HOOK процесса этого приложения, поэтому то я и решил что вся проблема в MDI-технологии.
Если в нем есть ошибка прошу помочь её найти.
Digitman (2004-05-17 11:26:00) [2]
> что то там нечего нету про MDI приложения
и не будет
потому что MDI-приложение - такое же равноправное GUI-приложение, как и все прочие GUI-приложения
когда идет речь о глоб.хуках, то речь идет именно о GUI-приложениях ... а уж MDI или не MDI - совершенно индифферентно
Игорь Шевченко (2004-05-17 11:20:00) [3]А какая разница, MDI или не MDI ?
Вот, например, Spy++ является MDI приложением, а хуки там прекрасно работают.
Dennisius (2004-05-17 10:53:00) [4]Просмотрел статью по реализации HOOK-сов что то там нечего нету про MDI приложения
Dennisius (2004-05-17 10:49:00) [5]-> Статью по хукам читал
На этом сайте нет, щас почитаем, только не говорите что
HOOK в MDI приложениях не пашет .....
Игорь Шевченко (2004-05-17 10:22:00) [6]Статью по хукам читал ?