【发布时间】:2011-07-26 11:28:48
【问题描述】:
我正在使用下面的 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();
但是,当与远程计算机的终端会话最小化或断开连接时,捕获的图像是空白的。感谢您在解决问题方面的帮助,至少在最小化的情况下。
配置: 我在运行 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) 在“远程桌面连接”窗口中,单击“选项”。
在“体验”选项卡上,确认已选中“位图缓存”复选框。或者,要禁用位图缓存,请清除位图缓存复选框
【问题讨论】:
-
我看到您将此问题标记为硒。您是否在远程会话中运行硒测试?如果是这样,为什么不直接在远程会话中进行屏幕捕获,作为 selenium 脚本的一部分?
标签: windows-7 selenium remote-desktop rdp terminal-services