如何使用_WinAPI_PostMessage发送组合键?
如何使用_WinAPI_PostMessage发送组合键?例如我需要Ctrl+A或Ctrl+C求解~~~ http://www.autoitx.com/thread-7169-1-1.html
难题一个 本帖最后由 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位是指什么。。。。谁能举几个例子不?
_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
我一箱情愿的以为这样子是行的,实质是不行的。不知道是不是我想错了? 这个问题我最后放弃了,希望楼主能搞定。 没人出来给个好的解决方法吗? 4楼应该可以吧
不过post间加上延时更好 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大同小异 改天再研究下。
页:
[1]