PostMessage发送组合键,我实验过几次,都失败
比如下面这些语句发送ALT+V, 根本无法发送成功
PostMessage(hWnd,WM_SYSKEYDOWN,VK_MENU,0);
PostMessage(hWnd,WM_SYSKEYDOWN,VK_V,0);
Sleep(50);
PostMessage(hWnd,WM_SYSKEYUP,VK_V,0);
PostMessage(hWnd,WM_SYSKEYUP,VK_MENU,0);
后来我使用了spy++, 提出消息列表里捕获到的消息, 用PostMessage发送.这种方式是可行的, ALT+V
PostMessage(hWnd,WM_SYSKEYDOWN, VK_MENU, 0x20380001);
PostMessage(hWnd,WM_SYSKEYDOWN, 0x56,0x20200001);
PostMessage(hWnd,WM_SYSCHAR,0x76,0x20200001);
PostMessage(hWnd,WM_SYSKEYUP,0x56,0xE0200001);
PostMessage(hWnd,WM_KEYUP, VK_MENU, 0xC0380001);
如果是只发送ALT的组合键,还有一种方式是
PostMessage(hWnd,WM_SYSKEYDOWN,VK_V,1<<29);
然后还有一种方式就是使用keybd_event的帮助, 使用keybd_event按着控制键,再用PostMessage发送按键的字母, 比如发送CTRL+L,
如果要发送shift键, 将VK_CONTROL替换成shift就行了.

本文探讨了如何使用PostMessage函数在后台发送组合键,通过实验发现直接发送ALT+V等组合键可能失败。通过Spy++捕获并重放消息的方式可以实现组合键的发送。另外,还可以结合keybd_event函数,先模拟按下控制键,再使用PostMessage发送字母,以实现如CTRL+L这样的组合键发送。同时提到了替换VK_CONTROL为VK_SHIFT来发送带有Shift键的组合键。这些方法总结自作者近期的按键程序开发经验,旨在帮助遇到类似问题的开发者。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



