我正在使用下面的 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 ) 在远程桌面连接窗口中,单击选项。
在“体验”选项卡上,确认已选中“位图缓存”复选框。或者,要禁用位图缓存,请清除位图缓存复选框