关于PostMessage后台发送组合键

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就行了.

keybd_event(VK_CONTROL, 0, 0, 0);
PostMessage(hWnd, WM_KEYDOWN, VK_L, 0x001E0001);
PostMessage(hWnd, WM_KEYUP, VK_L, 0xC01E0001);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);

这是我最近几天写按键程序的一点总结, 希望能帮助到其他的朋友.

时间: 2024-10-11 23:43:16

关于PostMessage后台发送组合键的相关文章

keybd_event模拟键盘发送组合键

keybd_event模拟键盘发送组合键 如需要模拟发送“@”键 正常真实键盘发送时需要先按下Shift键,然后在没有弹出来的情况下按左键盘的数字“2”按键,然后松开键盘,即起按键. 代码中操作如下: keybd_event(VK_SHIFT,0,0,0);                                     //模拟先按下Shift键   keybd_event(0x32,0,0,0);                                            

SendKeys发送组合键

使用: using System.Windows.Forms;//添加命名空间引用 { SendKeys.SendWait("{DOWN}"); ppt.ppt_sendkey("+{F5}");//全屏 表示SHIFT+F5的组合:加号直接代表shift键 ppt.ppt_sendkey("{ESC}");//取消全屏 } SendKeys   语句 将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样. 语法 SendKeys  

PostMessage 向Windows窗口发送Alt组合键

关于向Windows窗口发送Alt组合键的问题,这个真是经典问题啊,在网上找了一下,问的人N多,方法差不多, 但就是没有很好解决问题. 之前找到一个能正确发送的code:(Alt+A) PostMessage(hWnd,WM_SYSKEYDOWN,VK_MENU,0); PostMessage(hWnd,WM_SYSKEYDOWN,0x41,0); Sleep(50); PostMessage(hWnd,WM_SYSKEYUP,0x41,0); PostMessage(hWnd,WM_SYSKE

VBS调用windows api函数(postmessage)实现后台发送按键脚本

'=========================================================================='' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.0'' NAME: '' AUTHOR: Microsoft , Microsoft' DATE : 2014/8/10'' COMMENT: ''===================定义变量,注册

vmware vsphere web client 虚拟机怎么发送ctrl+alt+delete组合键

安装了虚拟机搭建测试环境,可是在使用windows服务器版本操作系统的时候.出现要求发送ctrl+alt+delete组合键,才能登陆操作系统 真实机发送ctrl+alt+delete组合键之后,会自动地打开真实机的任务调用系统.无法自动切换到虚拟机里面去,所以要用上面的方法处理. 取消要求ctrl+alt+delete进入登录界面 如果您觉得以上方法都还是太复杂了,可以直接设置取消求ctrl+alt+delete进入登录界面 通过设置编辑组策略编辑器,依次找到  计算机配置---安全设置---

远程桌面发送“Ctrl+Alt+Delete”组合键调用任务管理器

向远程桌面发送"Ctrl+Alt+Delete"组合键的两种方法? 1.在本地按下Ctrl+Alt+End,可以成功发送"Ctrl+Alt+Delete"组合键! 2.刚才上google查找时发现了另一个方法(比较土的方法,但有趣) 打开远程电脑的输入法,点击使用"软键盘",先按下本地键盘的Ctrl和Alt键,再点远程"软键盘"的"Del"键,就可以成功发送"Ctrl+Alt+Delete&quo

Qt 组合键的实现

(转自:http://blog.csdn.net/zerokkqq/article/details/6686912) CTRL+Enter发送信息的实现 在现在的即时聊天程序中,一般都设置有快捷键来实现一些常用的功能,类似QQ可以用CTRL+Enter来实现信息的发送. 在QT4中,所有的事件都继承与QEvent这个类,以下是用QEvent来实现快捷键的功能. 首先所有QT类的基类QObject有一个成员函数installEventFilter,这个函数是用来将一个事件处理器和该QObject绑

禁用Skype For Business 2016客户端的Ctrl+Enter快捷组合键

在Lync客户端或者Skype For Business 2016客户端上,都有很多快捷键(快捷键分类可以参考:https://support.office.com/en-us/article/Keyboard-shortcuts-for-Skype-for-Business-74eda765-5631-4fc1-8aad-cc870115347a).中国用户很多电脑上都会使用QQ这个软件,QQ中默认发送消息使用的是Ctrl+Enter组合键.如果有人使用QQ习惯了,在使用Lync客户端的时候就

Qt获取组合键

CTRL+Enter发送信息的实现 在现在的即时聊天程序中,一般都设置有快捷键来实现一些常用的功能,类似QQ可以用CTRL+Enter来实现信息的发送. 在QT4中,所有的事件都继承与QEvent这个类,以下是用QEvent来实现快捷键的功能. 首先所有QT类的基类QObject有一个成员函数installEventFilter,这个函数是用来将一个事件处理器和该QObject绑定起来,所以就有了我下面的想法. 首先在chat类定义一个eventFilter,该函数是一个虚函数,可以由子类进行更