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 listbox批量选中转移或删除

Delphi ioutils单元3查找并搜索文件夹信息

Delphi图表控件tchart使用faq

Delphi winapi: getmodulehandle - 获取一个模块(exe 或 dll)的句柄

Delphi获取dos命令行输出函数 运行cmd命令并获取结果

Delphi中创建json字符串

Delphi消息发送字符串

Delphi 中使用dialog api

Delphi内嵌汇编语言basm精要

Delphi 给 tcombobox 添加图标

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



打赏

取消

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

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

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

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

评论

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