Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
ВнизHOOK Найти похожие ветки
← →
YUS (2001-11-11 20:59) [0]Доброго всем вечера. Написал хук для мыши, но он не работает.
Подскажите в чем ошибка?
DLL:
library Hook;
uses
SysUtils,windows,messages,Classes;
const WM_LMouse=WM_USER+512;
WM_RMouse=WM_USER+513;
WM_ONhook=WM_USER+514;
var
boolSetHook: Boolean;
HookHandle: hHook;
ExeHandle: THandle;
function ClickMouse(Code: Integer; wParam, lParam:Longint):Longint; stdcall;
var
msg: PEVENTMSG;
x,y:integer;
begin
msg := Pointer(LParam);
x:=msg.ParamL ;y:=msg.ParamH ;
if Code= WM_MOUSEMOVE then
//Передаю сообщение в свою форму
PostMessage(findwindow(nil,"Form1"),WM_rMouse, x, y);
Result:=CallNextHookEx(HookHandle,code,wParam,LParam);
end;
function SetHook: boolean; export;
begin
if HookHandle<>0 then UnhookWindowsHookEx(HookHandle);
//Установить хук
HookHandle := SetWindowsHookEx(WH_MOUSE, @ClickMouse, hInstance, 0);
//О результатах установки сообщить
if HookHandle=0 then PostMessage(findwindow(nil,"Form1") ,WM_ONHook, 0,0)else
PostMessage(findwindow(nil,"Form1") ,WM_ONHook, 1,0)
end;
function RHook: boolean; export;
begin
Result:=UnhookWindowsHookEx(HookHandle);
end;
exports SetHook,
RHook;
begin
end.
Это Прогр.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
const
WM_LMouse = wm_user +512;
WM_RMouse= wm_User +513 ;
WM_ONhook=wm_user+514;
DLLName = "Project2.dll";
type
TForm1 = class(TForm)
Label1: TLabel;
Button2: TButton;
Label2: TLabel;
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure WrMouse (Var M : TMessage); message WM_RMouse;
procedure WlMouse (Var k : TMessage); message WM_LMouse;
procedure onhook (Var h : TMessage); message WM_ONhook;
{ Private declarations }
public
{ Public declarations }
end;
function SetHook: boolean; external DLLName name "SetHook";
function RHook: boolean; external DLLName name "RHook";
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WrMouse(var M: TMessage);
begin
label1.Caption:=inttostr(m.WParam)+" / "+ inttostr(m.lParam);
end;
procedure TForm1.WlMouse(var k: TMessage);
begin
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
sethook;
end;
procedure TForm1.onhook (Var h: TMessage);
begin
if h.WParam = 0 then showmessage("Хук не установлен");
if h.WParam = 1 then showmessage("Хук установлен");
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Rhook;
end;
end.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c