Я использую приведенный ниже код 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 2008 R2.
Дополнительные сведения из MSDN:
Почему вы получаете черный экран при отключении от RDP? http://msdn.microsoft.com/en-us/library/aa383015%28VS.85%29.aspx
Вот моя попытка заставить все работать, но ни один из следующих не сделал трюк:
Как получить данные при сверке окна RDP? Вы можете заставить драйвер дисплея RDP отправлять данные при минировании, проделать эти шаги и сообщить мне, как это происходит: 1) Добавьте следующий ключ HKEY_LOCAL_MACHINE\Software\Microsoft\Клиент сервера терминалов\Создал новое значение 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) В окне "Подключение к удаленному рабочему столу" нажмите "Параметры".
На вкладке "Опыт" убедитесь, что установлен флажок "Кэширование растрового изображения". Или, чтобы отключить кеширование растрового изображения, снимите флажок кэширования элемента управления