永发信息网

VB Postmessage发送字符串问题

答案:2  悬赏:30  手机版
解决时间 2021-03-11 02:11
  • 提问者网友:焚苦与心
  • 2021-03-10 10:50
偶尔玩一下网络游戏,为了方便 就想用VB 做一个简单的打怪辅助工具。
现在的问题是:
Postmessage往游戏窗口(已知句柄)发送按键消息时 没有反映。 但是对文本窗口是有效的。
这个问题是出在哪里呢?
用VB写的
游戏是 天龙八部
最佳答案
  • 五星知识达人网友:轮獄道
  • 2021-03-10 11:45
任何应用程序(包括背景)发送的任何关键信息(包括普通字符键,功能键,按住Shift键/控制/ Alt键加任意组合按键的键)来自动执行特定的功能,是一种用途很广,功能很实用价值,很多人都被困在此,很难理解,我也遇到过这方面的需求,并封锁。开始查了很多的信息化解决方案和互联网用户,一些可以发挥作用,但也有许多程序的测试证明行不通的。发送移位/控制/ Alt加任何的按键组合没有找到一个可行的解决方案,例如,下面的代码就不会被发送到指定的窗口(HWND)按Ctrl + C:
PostMessage的HWND,WM_KEYDOWN WM_KEYDOWN ,VK_C H002E0001“按C键的
PostMessage的HWND VK_CONTROL,H001D0001”的按下Ctrl键
PostMessage的HWND WM_KEYUP,VK_C和HC02E0001释放C键
PostMessage的HWND WM_KEYUP VK_CONTROL, HC01D0001“释放Ctrl键
上面的例子中,只能发送一个小写字母c。
下面的代码可以模拟Ctrl + C键,但它不能被发送到指定窗口的背景:
keybd_event VK_Ctrl,0,0,0'按下Ctrl键
的keybd_event VK_C的,0 0,0,按C键
keybd_event VK_C,0,KEYEVENTF_KEYUP,“C键
keybd_event VK_Ctrl 0,KEYEVENTF_KEYUP释放,释放Ctrl键
有真的没有办法解决这个问题的方式吗?我觉得应该这样做!后来,经过反复的Windows消息机制和键盘输入系统调用数据,终于找到了一个解决方案,并成功地展示了测试。自己一度被困在这里,得到最终的解决方案,而不是排斥的,现在来了,同样需要将大部分这方面的需求的朋友,而且这个问题已不再是少数“大师”的独家秘籍。
任何应用程序窗口发送模拟的关键,必须先获得输入焦点,要接收的关键不需要激活该应用程序的窗口句柄,以便使用Windows API的查找窗口FindWindowEx,首先FindWindow顶部的应用程序(顶层)的窗口句柄,然后使用FindWindowEx得到你想要领取钥匙的子窗口或控制的句柄,因为顶层窗口的应用程序不一定是关键的是接受窗口(如记事本。exe“的记事本程序实际收到的”关键点“窗口是主窗口中的”记事本“编辑控制)的ClassID或Caption找到。已经取得了假设的目标窗口句柄(HWND),窗口,然后使用PostMessage发送消息的普通字符键直接最简单的WM_CHAR消息如下:
PostMessage的HWND,WM_CHAR,ASC(“A”;),0'字符
发送的非普通字符键如功能键,箭头键使用WM_KEYDOWN,WM_KEYUP消息如下:
PostMessage的hWndMsg WM_KEYDOWN,VK_ESCAPE&H00010001'模拟按下Esc键
的PostMessage的hWndMsg的WM_KEYUP,VK_ESCAPE HC0010001模拟电梯Esc键
最后一个参数(LPARAM)低16位(0001)表示,按键高8位00表示,C0被解除,第二个最高(01个)的扫描码键,可以使用API?? MapVirtualKey( VirtualKey,0),得到(注:在每个系统中的扫描码可能会有所不同,在这个特定的数值例子,在实际应用中MapVirtualKey)。
下一个点偏移/控制/ ALT修饰键与其他键组合如何发送,使用下面的方法(使用Shift和Control API keybd_event):
keybd_event VK_SHIFT,H2A,0,0'模拟按下SHIFT键,与H2A是扫描码VK_SHIFT BR /> PostMessage的hWndMsg,WM_KEYDOWN,VK_A,及H001E0001的模拟按下A键,SHIFT + A产生一个大写的A字
的PostMessage的hWndMsg的WM_KEYUP,VK_A HC01E0001的模拟提起的一个关键
keybd_event VK_SHIFT&H2A,KEYEVENTF_KEYUP,0'模拟电梯的SHIFT键
(扫描码2A)替换上述VK_SHIFT VK_CONTROL(扫描1D)Ctrl键组合,可以实现VK_A(扫描代码1E)可以替换为任何功能键,如VK_F4(扫描代码3E)。
ALT修饰键特殊,它是一个系统的关键使用WM_SYSKEYDOWN / WM_SYSKEYUP消息,如下:
PostMessage的hWndMsg,WM_SYSKEYDOWN,VK_F4和H003E0001或&H20000000'模拟按Alt + F4
PostMessage的hWndMsg,WM_SYSKEYUP,VK_F4,与HC03E0001或&H20000000'模拟电梯ALT + F4
'&H20000000范围内的码位,设置Alt键被按下 / a>
在这一点上,你就大功告成了!我希望你快乐!
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-03-10 12:28
你对游戏窗口发送字符串是没有用的,得发送按键消息,用sendmessage函数
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯