Вниз
Скачать: CL | DM;

SetWindowHookEx для всех потоков в системе.   Найти похожие ветки 

← →
KiberArt ©   (2002-05-14 22:27) [0]

Да SetWindowHookEx(...@KeyBoardProc...) работает, все OK, но только для потока моей проги. А я хочу для всех потоков. Сделал, вроде должно работать, а почему-то не работает. Ниже приведены мои исходники exe и dll. Наверное, как обычно, что-нибудь перепутал :) Может кто подскажет ошибку.

program Project1;

uses
Forms,Windows,
Unit1 in "Unit1.pas" {Form1};

{$R *.res}

var
hDll:THandle;
hook:HHOOK;

begin
Application.Initialize;
hDLL := LoadLibrary(PChar("KeySpyDll.dll"));
hook := SetWindowsHookEx(WH_KEYBOARD,GetProcAddress(hDLL,PChar("KeyboardProc")),hDLL,0);
Application.ShowMainForm := false;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.



library MyDll;

uses
SysUtils,Windows;

{$R *.res}

function KeyboardProc(code:integer;WPARAM:wParam;LPARAM:lParam):integer;stdcall;
var f:system.text;
begin

//Чего мне надо
//result := CallNextHookEx(hook, code, wParam, lParam) - еще одна проблема

end;
end.

Насчет еще одной поблемы. Чтобы сработала CallNextHookEx, нужно первым параметром передать хэндл текущего хука, т.е. результат SetWindowsHookEx, как его передать в DLL?


← →
Fellomena   (2002-05-15 12:20) [1]

hook := SetWindowsHookEx(WH_KEYBOARD,GetProcAddress(hDLL,PChar("KeyboardProc")),hDLL,0); - ошибка;

SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance,0); - это делается в самой DLL, а не в коде проекта;


Очень рекомендую статью: "Hooks - аспекты реализации".
См. этот сайт или
http://www.delphikingdom.com/mastering/hook.htm



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
1-47560
MikeGavrilov
2002-06-28 10:51
2002.07.15
Проблема с Qreport и изображениями


14-47724
rhf
2002-06-09 13:31
2002.07.15
есть Кнут в формате TEX....


1-47474
ricks
2002-07-03 17:43
2002.07.15
Изображение Parent а


14-47729
McSimm
2002-06-11 17:20
2002.07.15
О ботанике... :)


14-47784
bbKOT
2002-06-15 13:05
2002.07.15
Что с бойцовским клубом?




   Наверх