定义一个全局热键,就是你要求的X键,判断如果是按下了X键就替换为鼠标左键啊!怕就怕游戏会屏蔽,否则很容易实现。以下是一个列子,随便写的,没测试过,但大概就是这样的了,你自己再测试一下。这个是用CTRL+F10来实现的,可连续点击,直到你关闭这个程序! 在USES 加shellapi 先定义 var hotkeyid1:integer; test_hit:bool; procedure wmhotkeyhandle(var msg:tmessage); message wm_hotkey;procedure TForm1.wmhotkeyhandle(var msg: tmessage); begin if (msg.lparamhi=vk_f10)and //ctrl+ F10 按下 鼠左 (msg.LParamLo=MOD_CONTROL then begin msg.Result:=1; if test_hit then test_hit:=false else test_hit:=true; click_ml.Click; end; end;procedure TForm1.click_mlClick(Sender: TObject); //具体替换过程在这里实现 begin if test_hit then mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 ) else mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ); end;procedure TForm1.FormCreate(Sender: TObject); begin hotkeyid1:=globaladdatom(pchar('userdefinehotkey1'))-$C000; registerhotkey(handle,hotkeyid1,MOD_CONTROL vk_f10); end;procedure TForm1.FormDestroy(Sender: TObject); begin unregisterhotkey(handle,hotkeyid1); deleteatom(hotkeyid1); end;
非常感谢xuantian2002(菜鸟) 兄的指点,能不能帮我再看一下,你的程序编译不过去 错误为:[Error] Unit1.pas(54): Undeclared identifier: 'click_ml' [Error] Unit1.pas(69): Not enough actual parameters [Hint] Unit1.pas(18): Private symbol 'click_mlClick' declared but never used [Hint] Unit1.pas(19): Private symbol 'FormCreate' declared but never used [Hint] Unit1.pas(20): Private symbol 'FormDestroy' declared but never used [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
在USES 加shellapi
先定义
var hotkeyid1:integer;
test_hit:bool;
procedure wmhotkeyhandle(var msg:tmessage);
message wm_hotkey;procedure TForm1.wmhotkeyhandle(var msg: tmessage);
begin
if (msg.lparamhi=vk_f10)and //ctrl+ F10 按下 鼠左
(msg.LParamLo=MOD_CONTROL then
begin
msg.Result:=1;
if test_hit then
test_hit:=false
else
test_hit:=true;
click_ml.Click;
end;
end;procedure TForm1.click_mlClick(Sender: TObject); //具体替换过程在这里实现
begin
if test_hit then
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 )
else
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
end;procedure TForm1.FormCreate(Sender: TObject);
begin
hotkeyid1:=globaladdatom(pchar('userdefinehotkey1'))-$C000;
registerhotkey(handle,hotkeyid1,MOD_CONTROL vk_f10);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
unregisterhotkey(handle,hotkeyid1);
deleteatom(hotkeyid1);
end;
错误为:[Error] Unit1.pas(54): Undeclared identifier: 'click_ml'
[Error] Unit1.pas(69): Not enough actual parameters
[Hint] Unit1.pas(18): Private symbol 'click_mlClick' declared but never used
[Hint] Unit1.pas(19): Private symbol 'FormCreate' declared but never used
[Hint] Unit1.pas(20): Private symbol 'FormDestroy' declared but never used
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure wmhotkeyhandle(var msg:tmessage);
message wm_hotkey;
procedure click_ml;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
hotkeyid1,hotkeyid2:integer;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
implementation{$R *.dfm}procedure TForm1.FormDestroy(Sender: TObject);
begin
unregisterhotkey(handle,hotkeyid1);
deleteatom(hotkeyid1);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
hotkeyid1:=globaladdatom(pchar('userdefinehotkey1'))-$C000;
registerhotkey(handle,hotkeyid1,MOD_CONTROL,vk_f10);
end;procedure TForm1.click_ml;
begin
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
end;procedure TForm1.wmhotkeyhandle(var msg: tmessage);
begin
if (msg.lparamhi=vk_f10)and //ctrl+ F10 按下 鼠左
(msg.LParamLo=MOD_CONTROL) then
begin
msg.Result:=1;
click_ml;
end
end;end.上边是测试通过的