作者:admin 来源: 日期:2020/9/30 15:07:39 人气: 标签:
在论坛上看很多人在问模拟按键的问题,比较好的是用Winio,但这样一是要加载winio.sys,二是基本只支持当前窗口按键,其实使用PostMessage就可以解决大部分游戏的按键模拟,很多人用不了就放弃了,其实关键是参数的构造不对,这个函数PostMessage (MyHwnd, WM_KEYDOWN, key, lParam)中,很多人的用法都是lParam为0,即:PostMessage (MyHwnd, WM_KEYDOWN, key, 0);这里lParam的构造应该如下:[具体为什么这么构造,请大家自己到网上看下PostMessage 的说明]Delphi代码:一、建立构造函数:function VKB_param(VirtualKey:Integer;flag:Integer):Integer; //函数名vars,Firstbyte,Secondbyte:String;S_code:Integer;Beginif flag=1 then //按下键 begin Firstbyte :=’00’ endelse //弹起键 begin Firstbyte :=’C0′ end;S_code:= MapVirtualKey(VirtualKey, 0);Secondbyte:=’00’+inttostr(s_code);Secondbyte:=copy(Secondbyte,Length(Secondbyte)-1,2);s:=’$’+Firstbyte + Secondbyte + ‘0001’;Result:=strtoint(s);End;二、使用按键的方法:lparam := VKB_param(key, 1); {按下键}PostMessage (MyHwnd, WM_KEYDOWN, key, lParam);lParam := VKB_param(key, 0); {松开键}PostMessage (MyHwnd, WM_KEYUP, key, lParam);三、说明:key为键值,如1键[不是数字键的1]的值是$31,flag传递的是按键状态,1是按下,0是弹起。四、多个游戏中通过,只要不封按键精灵的游戏都可以使用?