17

以下の 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 ) [リモート デスクトップ接続] ウィンドウで、[オプション] をクリックします。

[エクスペリエンス] タブで、[ビットマップ キャッシュ] チェック ボックスがオンになっていることを確認します。または、ビットマップ キャッシュを無効にするには、[ビットマップ キャッシュ] チェック ボックスをオフにします。

4

5 に答える 5

0

リモート デスクトップをテスト マシンに接続する場合は、作業が完了したら必ずマシンを再起動してください。そうしないと、デスクトップがロックされたままになり、スクリーン キャプチャが機能しなくなります。

この問題を回避する方法は他にないと思います。

于 2011-06-28T15:54:26.303 に答える