远程桌面断开连接时,GetForegroundWindow返回Null

我有一个testing,启动一个应用程序,并validation它已经通过调用GetForegroundWindow()启动。 testing在我们通常通过远程桌面访问的远程机器上运行。 当我们有一个rdp会话打开机器,testing完成,一切都很好。 但是,一旦我们closures远程桌面,testing失败,因为GetForegroundWindow总是返回空值。 我已经检查,断开连接后的活动桌面仍然是“默认”,所以我敢肯定,我没有遇到这个问题。 任何想法可能是什么原因造成的?

提前致谢

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

在任何情况下,使用EnumWindows获取屏幕上的所有窗口。 找到与您正在查找的应用程序相匹配的HWND。

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

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

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

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