以下の 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) 次のキーを追加します。値のデータとして 2 を指定しました。
注: また、レジストリ キーを HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Terminal Server Client\ に追加してみました 2) ビットマップ キャッシュを無効にします ( http://technet.microsoft.com/en-us/library/cc737325(WS.10). aspx ) [リモート デスクトップ接続] ウィンドウで、[オプション] をクリックします。
[エクスペリエンス] タブで、[ビットマップ キャッシュ] チェック ボックスがオンになっていることを確認します。または、ビットマップ キャッシュを無効にするには、[ビットマップ キャッシュ] チェック ボックスをオフにします。