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