最小化\断开时的终端会话在捕获桌面快照时返回空白屏幕

Ram*_*mbi 15 selenium rdp remote-desktop terminal-services windows-7

我使用下面的JAVA代码来捕获远程计算机的桌面

    Robot robot = new Robot();
    BufferedImage screenShot = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));

    ByteArrayOutputStream imageBytes = new ByteArrayOutputStream();
    ImageIO.write(screenShot, "PNG", imageBytes);

    return imageBytes.toByteArray();
Run Code Online (Sandbox Code Playgroud)

但是,当与远程机器的终端会话最小化或断开连接时,捕获的图像为空白.感谢您帮助解决问题,至少是最小化的方案.

配置: 运行Windows 7的物理机和运行Windows Server 2008 R2的虚拟机存在同样的问题.

来自MSDN的更多见解:

从RDP断开连接时为什么会出现黑屏?   http://msdn.microsoft.com/en-us/library/aa383015%28VS.85%29.aspx

这是我尝试使事情有效的方法,但以下都没有做到这一点:  

RDP窗口最小化时如何获取数据?   您可以强制RDP显示驱动程序在缩小时发送数据,请尝试以下步骤并告诉我它是如何进行的:1)添加以下密钥HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client \创建一个新的DWORD值并将其命名为RemoteDesktop_SuppressWhenMinimized.指定2作为值数据.

注意:还尝试将注册表项添加到HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Terminal Server Client\2)禁用位图缓存(http://technet.microsoft.com/en-us/library/cc737325(WS.10). aspx)在"远程桌面连接"窗口中,单击"选项".

在"体验"选项卡上,验证是否已选中"位图缓存"复选框.或者,要禁用位图缓存,请清除"位图缓存"复选框

sal*_*nga 7

如果最小化远程桌面窗口,Windows会将远程会话切换到无GUI模式,并且不显示窗口和控件.因此,TestComplete(或TestExecute)将无法与测试应用程序的GUI进行交互,因为它不存在,并且您的自动GUI测试将失败.要解决此问题,可以在本地计算机(启动远程桌面的位置)上更改远程桌面的注册表设置:在本地计算机上,关闭所有打开的远程桌面会话.启动注册表编辑器(regedit.exe).导航到以下注册表项之一,具体取决于您是仅为当前用户还是计算机上的所有用户修改远程桌面设置:

HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client创建名为RemoteDesktop_SuppressWhenMinimized的DWORD值并将其设置为2.

或者您可以通过以下步骤以编程方式执行此操作:

  • 透明窗口
  • 恢复窗口
  • 捕获
  • 最小化它
  • 删除透明度


Jes*_*sse 0

如果将远程桌面连接到测试计算机,请确保完成后重新启动计算机,否则桌面将保持锁定状态并且屏幕截图将不起作用。

我不相信还有其他方法可以解决这个问题。