我有一个启动应用程序的测试,并通过调用 GetForegroundWindow() 验证它是否已启动。测试在我们通常通过远程桌面访问的远程机器上运行。当我们对机器打开一个 rdp 会话时,测试完成并且一切正常。但是,一旦我们关闭远程桌面,测试就会失败,因为 GetForegroundWindow 总是返回 Null。我已经检查过断开连接后的活动桌面仍然是“默认”,所以我确定我没有遇到这个问题。有什么想法可能导致这种情况吗?
提前致谢
我假设有 GetForegroundWindow 返回,您有一些方法可以验证返回的 HWND 来自感兴趣的应用程序而不是其他窗口。
无论如何,使用 EnumWindows 来获取屏幕上的所有窗口。找到与您正在寻找的应用相匹配的 HWND。
如果您无法验证 HWND,请在启动应用程序之前调用 EnumWindows 以获取屏幕上的窗口总数。然后通过您的自动化脚本启动您的应用程序。通过 EnumWindows 轮询窗口计数,直到计数增加一。
如果您的远程桌面是虚拟机,您可以使用 tscon 命令:
tscon 1 /dest:console
其中“1”是活动会话的 ID。
此命令断开 RDP,但将会话发送到控制台。您可以捕捉窗口,截屏等...