Я использую приведенный ниже код 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) В удаленном рабочем столеВ окне «Соединение» нажмите «Параметры».
На вкладке «Опыт» убедитесь, что установлен флажок Кэширование растрового изображения, или, чтобы отключить кэширование растрового изображения, снимите флажок Кэширование растрового изображения