找回密码
 加入
搜索
查看: 5838|回复: 8

[AU3基础] 如何使用_WinAPI_PostMessage发送组合键?

  [复制链接]
发表于 2010-7-30 02:35:43 | 显示全部楼层 |阅读模式
如何使用_WinAPI_PostMessage发送组合键?例如我需要Ctrl+A或Ctrl+C

求解~~~
发表于 2010-7-30 02:59:01 | 显示全部楼层
 楼主| 发表于 2010-7-30 09:46:50 | 显示全部楼层
本帖最后由 henbo 于 2010-7-30 09:50 编辑

找到一些资料,感觉是可以通过第四个参数来设置的。

如下:
-------------------------------------------------------------------------
postmessage(handle, WM_CHAR, aChar, aKeyData)
aChar = "c"
aKeyData = 32位
    1-15位表示发送几遍,
    16-23表示ALT、CTRL、NUM、CAPS等(具体何值忘了),
    24位表示是左ALT、CTRL还是右ALT、CTRL(通常为0),
    25-28位保留
    30位表示上一个键的状态KEY DOWN OR UP,1为发送前的DWON状态,0为UP
    31位表示:0表示键开始按下,1为开始释放。
从要求看:aKeyData为: 0000 0000 xxxx xxxx 0000 0000
其中xxxx xxxx放CTRL的扫描码,具体忘了,请自己查一下。
----------------------------------------------------------------------------
搞不懂上边说的24位,30位是指什么。。。。谁能举几个例子不?
 楼主| 发表于 2010-7-30 09:52:29 | 显示全部楼层
_WinAPI_PostMessage($hWnd, 0x0100,17, 0);按住ctrl
_WinAPI_PostMessage($hWnd, 0x0100,65, 0);点击A
_WinAPI_PostMessage($hWnd, 0x0101,65, 0);释放A
_WinAPI_PostMessage($hWnd, 0x0100,67, 0);点击C
我一箱情愿的以为这样子是行的,实质是不行的。不知道是不是我想错了?
发表于 2010-7-30 11:39:13 | 显示全部楼层
这个问题我最后放弃了,希望楼主能搞定。
 楼主| 发表于 2010-8-2 11:33:38 | 显示全部楼层
没人出来给个好的解决方法吗?
发表于 2010-8-2 13:12:19 | 显示全部楼层
4楼应该可以吧
不过post间加上延时更好
发表于 2010-8-2 13:21:43 | 显示全部楼层
keybd_event VK_Ctrl, 0, 0, 0   '按下Ctrl键

keybd_event VK_C, 0, 0, 0      '按下C键

Sleep 500            '延时500毫秒

keybd_event VK_C, 0, KEYEVENTF_KEYUP, 0   '释放C键

keybd_event VK_Ctrl, 0, KEYEVENTF_KEYUP, 0   '释放Ctrl键


这是VB中一个keybd_event的例子,和postmessage大同小异
 楼主| 发表于 2010-8-2 20:04:37 | 显示全部楼层
改天再研究下。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-25 08:56 , Processed in 0.079306 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表