我在下面有个鼠标钩子DLL程序,我想在外部建立一个程序启动鼠标钩子右键HOOK,另外的一个‘按纽移动的程序’也是已经打开的。现在需要的结果就是:如果按一下鼠标右键,就执行一个已经打开的程序的过程。例如,我下面有个‘按纽移动的程序’,那么我不论在什么地方按一下鼠标右键, ‘按纽移动的程序’的按纽就走一步。
也就相当于不论在什么地方按一下鼠标右键,就执行一次‘按纽移动的程序’的TForm1.button1click的事件。
请各位大侠提个好的方法。
谢谢
library MyHook;{这个是鼠标钩子DLL}uses
SysUtils,
Windows,
Messages,
Classes;{$R *.res}var
hook: HHOOK;
{钩子函数,鼠标键按下}
function MouseHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
Result := CallNextHookEx(hook, nCode, wParam, lParam);
end;{建立钩子}
function SetHook: Boolean; stdcall;
begin
hook := SetWindowsHookEx(WH_MOUSE, @MouseHook, HInstance, 0);
Result := hook <> 0;
end;function DelHook: Boolean; stdcall;
begin
Result := UnhookWindowsHookEx(hook);
end;exports
SetHook name 'SetHook',
DelHook name 'DelHook',
MouseHook name 'MouseHook';//SetHook, DelHook, MouseHook;
begin
end.unit Unit1;(这个是按纽的程序}interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure button1click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.button1click(Sender: TObject);
begin
button1.top:= button1.top+50;
color:=clred;
end;end.
也就相当于不论在什么地方按一下鼠标右键,就执行一次‘按纽移动的程序’的TForm1.button1click的事件。
请各位大侠提个好的方法。
谢谢
library MyHook;{这个是鼠标钩子DLL}uses
SysUtils,
Windows,
Messages,
Classes;{$R *.res}var
hook: HHOOK;
{钩子函数,鼠标键按下}
function MouseHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
Result := CallNextHookEx(hook, nCode, wParam, lParam);
end;{建立钩子}
function SetHook: Boolean; stdcall;
begin
hook := SetWindowsHookEx(WH_MOUSE, @MouseHook, HInstance, 0);
Result := hook <> 0;
end;function DelHook: Boolean; stdcall;
begin
Result := UnhookWindowsHookEx(hook);
end;exports
SetHook name 'SetHook',
DelHook name 'DelHook',
MouseHook name 'MouseHook';//SetHook, DelHook, MouseHook;
begin
end.unit Unit1;(这个是按纽的程序}interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure button1click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.button1click(Sender: TObject);
begin
button1.top:= button1.top+50;
color:=clred;
end;end.
希望高手进来