【问题标题】:PyKeyboard.tap_key() doesn't work when I disconnect from Remote Desktop当我从远程桌面断开连接时,PyKeyboard.tap_key() 不起作用
【发布时间】:2015-01-07 01:07:29
【问题描述】:

我有一个程序使用 PyKeyboard.tap_key() 将击键发送到我正在自动化的另一个应用程序(不幸的是,该应用程序无法以任何其他方式自动化)。我在通过远程桌面访问的远程 Windows 计算机上运行它。

PyKeyboard.tap_key() 在我连接时运行良好,但如果我从远程桌面会话断开连接,则不再提供击键。

另一个问题:断开远程会话是否等同于“注销->切换用户”?我认为问题在于用户未登录(即使会话正在运行)。

【问题讨论】:

  • 比这更简单,我制作了一个脚本来打开记事本并输入文本。当我连接到虚拟机时,脚本运行得很好。当我未连接时(运行脚本然后断开与机器的连接),脚本只打开记事本,但没有写入任何内容
  • 连接我的意思是登录。这是一个只能通过本地网络访问的虚拟机,并且需要密码。不需要使 VM 窗口成为焦点。当它被最小化并且我的实际计算机(我用来连接到 VM 的计算机)实际上被锁定时,它工作得很好
  • 好的,让我贴一下记事本脚本
  • 就在这个问题上

标签: python windows winapi remote-desktop


【解决方案1】:

看来这不是 Python 相关的问题。 SendInput() 也会发生这种情况(这可能是 Python 使用的 WINAPI 函数)。

来自this MSDN thread

当计算机出于安全原因被锁定时,不允许应用程序将输入发送到桌面。我测试了在RDP最小化时更改光标位置,但实际上,会话最小化后恢复时鼠标光标不显示,恢复时,光标不可见,直到鼠标移回可见区域,在这种情况下,它会显示在用户移动它的位置。事实上,即使恢复了 RDP 窗口但主机上的鼠标不在窗口上方,RDP 窗口中的鼠标光标也将不可见。所以这可能也不可能。如果您正在尝试实现特定行为,那么除了使用模拟输入移动鼠标之外,可能还有其他方法可以做到这一点。

【讨论】:

  • 感谢您的回答。不确定这是否是同一个问题,因为我的脚本在 RDP 客户端最小化时有效,即使我的实际计算机被锁定。仅当 RDP 客户端关闭(并且没有人连接到 RD)时才会失败
  • 最小化 RDP 并锁定您自己的计算机不会锁定远程计算机 - 只有断开连接会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 2015-02-02
相关资源
最近更新 更多