Delphi PostMessage 虚拟按键

2022-12-29 10:51:11 作者:admin

本文整理自网络,侵删。

 在论坛上看很多人在问模拟按键的问题,比较好的是用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是弹起。四、多个游戏中通过,只要不封按键精灵的游戏都可以使用? 

相关阅读 >>

Delphi实现文件的拖放功能

Delphi2007-Delphi2010 程序不出现在任务栏的方法

Delphi 自带gif控件的动画图片加载和播放

Delphi将文件删除至回收站

Delphi mscomm控件串口收发程序

Delphi cxgrid应用笔记

Delphi fmx 获取控件句柄

Delphi 服务端日志记录

Delphi xe 枚举指定目录及子目录下的所有文件

Delphi篇之写托盘图标

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



在线咨询 拨打电话