幻想游戏中,有一个叫怪怪水族馆的,要狂点鼠标,怎样做一个鼠标连击器,即在游戏中按下x键就等于鼠标连击,用户只用移动鼠标即可,不用点了?

解决方案 »

  1.   

    定义一个全局热键,就是你要求的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;
      

  2.   

    非常感谢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'
      

  3.   

    unit Unit1;interfaceuses
      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.上边是测试通过的
      

  4.   

    同意楼上, 我曾用mouse_event和VB写了一个帮我打游戏的程序。