c++ - keybd_event() 调用不发送到远程桌面

标签 c++ winapi remote-desktop

我正在尝试使用 keybd_event() 按下某些键以进入远程桌面应用程序。对于最简单的测试,我只是在远程 session 中打开记事本,并在当前用户关注记事本的情况下在本地计算机上运行调用 keybd_event()。

不幸的是,它似乎没有将任何输入发送到远程桌面。

如果我在本地计算机上运行该应用程序并聚焦本地的记事本实例,它会准确地键入我想键入的内容,这没有问题。

有没有人知道为什么这行不通?显然我可以手动输入远程桌面 session 。

谢谢

最佳答案

任何远程桌面程序都是连接远程系统的网关,它是中介。通过任何方法(如 keybd_eventSendInputPostMessage 等)向此程序发送任何键盘消息将被 RDP 程序静默吸收。它根本不会使用它,也不会将它传递给连接的资源。

很可能(我不确定),该程序可能已记录 API 以向其发送一些消息,例如关闭 session 、打开 session 或将消息发送到已连接的 session 。使用给定的 API(函数、COM 接口(interface)等),您可以向连接的资源发送一些输入。

关于c++ - keybd_event() 调用不发送到远程桌面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27061922/

相关文章:

c# - 如何将包含其他第三方 C 库的 C++ project_A 链接到另一个 project_B

c++ - kafka消费者在zookeeper中的注册列表

c# - 拦截所有 WM_MOUSEWHEEL 消息

c# - WINDOWPLACMENT 结构的正确长度

windows - Windows 上的安全命名共享内存,因此只有特定进程可以打开

dll - 如何在 RDP 期间访问远程 USB 智能卡

ubuntu - 在 ubuntu 14.04 上默认阻止启动到桌面 GUI

azure-active-directory - Azure AD 加入的 PC 远程桌面无法正常工作

c++ - 处理 IDispatch 参数和 COM

C++ 在循环练习中添加数字