ユーザーがスクリーンショットをキャプチャし、ユーザー定義の場所に画像を保存できる小さなアプリケーションを作成しました。また、アクティブなウィンドウのスクリーンショットをキャプチャすることもできます。
問題はアクティブ ウィンドウにあります。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 キーが押されると、ユーザーがスクリーンショットを取得したいアプリケーションのツールバーにフォーカスが移動し、ツールバーのスクリーンショットが取得され、そのウィンドウのスクリーンショットは取得されません。ユーザーがフォーカスしています。
この問題を解決する方法についてアドバイスをお願いします。