Главная страница
    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.46 MB
Время: 0.033 c
3-1086202360
Другаля Ян Павлович
2004-06-02 22:52
2004.06.27
FastReport


1-1086950719
Roma
2004-06-11 14:45
2004.06.27
Как сделать чтобы Font оставался прежний если Edit1.Enabled=false


4-1084817805
John Doe
2004-05-17 22:16
2004.06.27
Командная строка


1-1087007130
Aswert
2004-06-12 06:25
2004.06.27
Как объявить структуру константой ?


14-1086852593
Pro
2004-06-10 11:29
2004.06.27
Нужна прога типа Диспетчер Задач





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский