VC 用keybd_event模拟CTRL键按下失败

haiqing0755 2014-12-30 10:53:16
我用keybd_event模拟CTRL键按下,接着获取按键状态的时候却表示没有按下.代码如下:
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0), 0, 0);
Sleep(10);
if(GetKeyState(VK_CONTROL)<0)
{
printf("Control Pressed!!\r\n");
PostMessage(hwndEx, WM_KEYDOWN, 'C', 0);//模拟按下 C 键
Sleep(100);
PostMessage(hwndEx, WM_KEYUP, 'C', 0); // 模拟释放C 键
Sleep(10);
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0), KEYEVENTF_KEYUP, 0);
}
else
{
printf("Control not Pressed!!\r\n");
}
这个用在自己笔记本上每次都有提示Control Pressed,放在云服务器上,用电脑远程的时候也提示有按下,但是一断开远程连接的时候就会一直提示Control not Pressed!!。

麻烦给为大侠高手帮忙分析一下是哪里的问题?
谢谢!
...全文
356 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
haiqing0755 2015-01-07
  • 打赏
  • 举报
回复
谢谢Charlessimonyi的解释!
encoderlee 版主 2014-12-31
  • 打赏
  • 举报
回复
你可以用SPY++抓一抓看看你对目标程序发送组合键的时候,它的窗口收到的是什么消息,然后照着来用SendMessage发送试试,如果组合键是目标程序注册的一个热键,可以直接对目标程序发送WM_HOTKEY消息就行了
信阳毛尖 2014-12-31
  • 打赏
  • 举报
回复
放在云服务器上,用电脑远程的时候也提示有按下,但是一断开远程连接的时候就会一直提示Control not Pressed!! -------------------------------------------------------------------------------------------------------------------------------- 我咋蒙圈了呢?你断开连接了还能测试??
haiqing0755 2014-12-31
  • 打赏
  • 举报
回复
我需要发送组合键呢?该怎么办?
encoderlee 版主 2014-12-31
  • 打赏
  • 举报
回复
当远程桌面断开后,云主机上的系统是什么状态,是锁屏的状态,也就是需要选择用户或输入用户名密码来登陆windows的那个登陆界面,所以模拟键盘鼠标就失效了。 网上也搜不到什么解决办法,连按键精灵这样成熟的商业软件也解决不了。 如果你是要通过模拟鼠标键盘来操作另外一个软件,可以使用直接向目标程序窗口SendMessage发消息的方式来实现。
haiqing0755 2014-12-31
  • 打赏
  • 举报
回复
那这个有什么办法可以解决吗?
encoderlee 版主 2014-12-31
  • 打赏
  • 举报
回复
这个是windows系统的问题,断开远程桌面后,keybd_event、mouse_event、SendInput 之类的模拟鼠标键盘的API都会失效,不仅如此,用GDI对桌面截图等操作也会失败,至于为什么失败,和windows内部的一些机制有关,远程桌面断开后,他就不再处理一些桌面上的鼠标键盘操作了,并且桌面也不绘制不刷新了。
haiqing0739 2014-12-31
  • 打赏
  • 举报
回复
断开远程连接,但是服务器并没有关呢。 这段代码是放在DLL通过其他程序里运行的,然后有将打印信息输出到到TXT文件,方便查看。

16,504

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧