Delphi PostMessage 虚拟按键


本文整理自网络,侵删。

 
在论坛上看很多人在问模拟按键的问题,比较好的是用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; //函数名
var
s,Firstbyte,Secondbyte:String;
S_code:Integer;
Begin
if flag=1 then  //按下键
  begin
  Firstbyte :=’00’
  end
else                  //弹起键
  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是弹起。
四、多个游戏中通过,只要不封按键精灵的游戏都可以使用?

相关阅读 >>

Delphi extractfileext() 获取文件后缀的函数

Delphi urldownloadtofile 支持进度条

Delphi获取星期几

Delphi 如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行

Delphi 获取文件夹下包括子目录所有文件

rad studio Delphi创建安卓服务creating android services

Delphi xe5 给edit增加自定义按钮

Delphi vcl 的 tpagecontrol 控件,实现对页签的拖动

Delphi hextoint32

Delphi high 返回数组下标的最大值

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...