要求是系统按键,功能是 按一下左方向键,产生效果是按了两下方向键。
程序用在游戏中,
求代码。

解决方案 »

  1.   

    我注册了一个系统热键VK_LEFT,但是发现他把吃掉了。
    在   procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;
    procedure TForm1.HotKeyDown(var Msg: Tmessage);
    begin
      if (msg.LParamHi = VK_LEFT) then
      begin
        beep();//
        Sleep(1000)   ;
        beep();//这里两个beep都能运行,我的思路是把这两个beep换成两个左方向键,试了很多方法
        //不起作用,  keybd_event ,sendmessage都试过了,不行,有没有人帮我解决一下,谢谢。
      end;
    end;
      

  2.   

    只要一捕捉到VK_LEFT消息,马上就运行这个过程了,肯定实现不了!能不能考虑用其他键代替?
      

  3.   

    实现了代码,但是到游戏中就失效了,可能游戏做了限制,有没有好的方式,用全局钩子不知道行不行?unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
        procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;  public
        { Public declarations }
      end;var
      Form1: TForm1;
      HotKeyId: Integer;
      HotKeyId1: Integer;
    implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    HotKeyId := GlobalAddAtom('MyHotKey') - $C000;
    //RegisterHotKey(Handle,hotkeyid,0,VK_LEFT); 
    RegisterHotKey(HANDLE,hotkeyid,0,$41);HotKeyId1 := GlobalAddAtom('MyHotKey1') - $C001;
    //RegisterHotKey(Handle,hotkeyid,0,VK_LEFT); 
    RegisterHotKey(HANDLE,hotkeyid,0,$44);
    end;procedure TForm1.HotKeyDown(var Msg: Tmessage);
    begin
      if (msg.LParamHi = $41) then
      begin
       keybd_event(VK_LEFT,0,0,0);
       sleep(10);
       keybd_event(VK_LEFT,0,0,0);
      end;  if (msg.LParamHi = $44) then
      begin
       keybd_event(VK_RIGHT,0,0,0);
       sleep(10);
       keybd_event(VK_RIGHT,0,0,0);
      end;
    end;
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    UnRegisterHotKey(handle, HotKeyId); //注销HotKey, 释放资源。
    UnRegisterHotKey(handle, HotKeyId1); //注销HotKey, 释放资源。
    end;
    end.
      

  4.   

    游戏中可能已经有一些HOOK的防范措施了,比如HOOK你的键盘,全局钩子希望不大,直接winIO不知可行不可行