【问题标题】:GetForegroundWindow returns Null when remote desktop is disconnected远程桌面断开连接时 GetForegroundWindow 返回 Null
【发布时间】:2009-09-17 04:06:35
【问题描述】:

我有一个启动应用程序的测试,并通过调用 GetForegroundWindow() 验证它是否已启动。测试在我们通常通过远程桌面访问的远程机器上运行。当我们对机器打开一个 rdp 会话时,测试完成并且一切正常。但是,一旦我们关闭远程桌面,测试就会失败,因为 GetForegroundWindow 总是返回 Null。我检查了断开连接后的活动桌面仍然是“默认”,所以我确定我没有遇到this 问题。有什么想法可能导致这种情况吗?

提前致谢

【问题讨论】:

  • 恐怕您确实遇到了 this 问题(即 Windows 安全性)。当您最小化或断开 RDP 会话时 - 您的会话切换到安全桌面,并且某些 API 将无法正常工作。在这里查看:tech-archive.net/Archive/Windows/…

标签: windows winapi remote-desktop rdp pywin32


【解决方案1】:

我假设有 GetForegroundWindow 返回,您有一些方法可以验证返回的 HWND 来自感兴趣的应用程序,而不是其他窗口。

无论如何,使用 EnumWindows 获取屏幕上的所有窗口。找到与您正在寻找的应用相匹配的 HWND。

如果您无法验证 HWND,请在启动应用程序之前调用 EnumWindows 以获取屏幕上的窗口总数。然后通过您的自动化脚本启动您的应用程序。通过 EnumWindows 轮询窗口计数,直到计数增加一。

【讨论】:

    【解决方案2】:

    如果你的远程桌面是虚拟机,你可以使用 tscon 命令:

    tscon 1 /dest:console 其中“1”是活动会话的 ID。

    此命令断开 RDP,但将会话发送到控制台。您可以捕捉窗口、截屏等...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 2010-11-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多