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