1

ユーザーがスクリーンショットをキャプチャし、ユーザー定義の場所に画像を保存できる小さなアプリケーションを作成しました。また、アクティブなウィンドウのスクリーンショットをキャプチャすることもできます。

問題はアクティブ ウィンドウにあります。Java には、アクティブなウィンドウのスクリーンショットを取得する方法が用意されていないことを知りました。そのため、グーグルで検索したところ、開発者が Alt+PrntScrn を使用してスクリーンショットを取得し、クリップボードから画像を取得していることがわかりました。

コードは次のとおりです。

     robot.keyPress(KeyEvent.VK_ALT);
     robot.keyPress(KeyEvent.VK_PRINTSCREEN);
     robot.keyRelease(KeyEvent.VK_PRINTSCREEN);
     robot.keyRelease(KeyEvent.VK_ALT);
     Thread.sleep(1500);
     RenderedImage image = (RenderedImage)getClipboard();
     saveToImage(image,targetLocation);

ここで何が起こるかというと、ロボット クラスによって Alt キーが押されると、ユーザーがスクリーンショットを取得したいアプリケーションのツールバーにフォーカスが移動し、ツールバーのスクリーンショットが取得され、そのウィンドウのスクリーンショットは取得されません。ユーザーがフォーカスしています。

この問題を解決する方法についてアドバイスをお願いします。

4

1 に答える 1

1

これが私のアプリケーションなら、JNA -- Java Native Accessを使用してアクティブなウィンドウとそのサイズを取得し、その情報を使用してロボットが画像を取得できるようにします。

于 2012-05-05T05:01:15.047 に答える