Сейчас на форуме: hgdagon, asfa (+4 невидимых)

 eXeL@B —› Программирование —› Как установить клавиатурный хук из dll не глобально ?
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 17 марта 2007 12:56
· Личное сообщение · #1

В интересующей меня программе используется функция xxx из библиотеки test.

library test;

uses Winprocs,sysutils;

Var ourHook:HHook;

function HookProc(Code: integer; wParam: Word; lParam: Longint): integer; stdcall;
begin
if wparam=32 then beep;
HookProc := CallNextHookEx(ourHook, Code, wParam, lParam);
end;

exports xxx;

begin
ourHook:= SetWindowsHookEx(WH_Keyboard, @HookProc, HInstance, 0);
end.


Как видно из кода, при загрузке DLL я устанавливаю хук на клавиатуру. При отлавливании пробела выдаётся сигнал. Этот пример я где то передрал и упростил. Всё работает отлично, но моя задача перехватывать кнопку только тогда когда она нажата в приложении подгрузившим эту dll а не глобально. Скажу сразу, что модифицировать можно только эту dll. Посоветуйте пожалуйста как это сделать.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 17 марта 2007 14:08
· Личное сообщение · #2

GetWindowThreadProcessId(GetActiveWindow, @Pid);
if (Pid <> GetCurrentProcessId) then exit
else showmessage('Our process!');




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 17 марта 2007 17:31
· Личное сообщение · #3

HoBleen - Спасибо ! Так всё получилось.


 eXeL@B —› Программирование —› Как установить клавиатурный хук из dll не глобально ?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати