どのようにして Java プログラムがウィンドウ ハンドルを取得するか

Javaでは、java.awt.Robotクラスを使用してマウスやキーボード操作をシミュレートでき、これによりハンドルを取得できます。以下はRobotクラスを使用して、現在ウィンドウ(ウィンドウのタイトル)のハンドルを取得する方法を示す例です。

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class HandleGrabber {
    public static void main(String[] args) {
        try {
            // 创建Robot对象
            Robot robot = new Robot();

            // 模拟按下Alt键
            robot.keyPress(KeyEvent.VK_ALT);
            // 模拟按下Tab键
            robot.keyPress(KeyEvent.VK_TAB);

            // 模拟释放Tab键
            robot.keyRelease(KeyEvent.VK_TAB);
            // 模拟释放Alt键
            robot.keyRelease(KeyEvent.VK_ALT);

            // 等待一段时间,以确保切换到正确的窗口
            Thread.sleep(1000);

            // 模拟按下Ctrl键
            robot.keyPress(KeyEvent.VK_CONTROL);
            // 模拟按下F4键
            robot.keyPress(KeyEvent.VK_F4);

            // 模拟释放F4键
            robot.keyRelease(KeyEvent.VK_F4);
            // 模拟释放Ctrl键
            robot.keyRelease(KeyEvent.VK_CONTROL);

            // 获取剪贴板内容(即当前窗口的标题)
            String handle = ClipboardUtil.getClipboardString();

            // 输出窗口标题
            System.out.println("当前窗口句柄:" + handle);
        } catch (AWTException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

上記コードでは、`Robot`クラスを用いて、Alt+Tabキーを押してウィンドウを切り替え、その後、Ctrl+F4キーを押して現在アクティブなウィンドウを閉じている。ウィンドウの切り替えと閉じを行った後、ClipboardUtilなどのクリップボードユーティリティを使用して、クリップボードの中身、すなわち現在アクティブなウィンドウのタイトルを取得している。最後に、ウィンドウのタイトルをコンソールに出力している。

なお、Javaのセキュリティ機能のため、クリップボードの中身を取得するにはサードパーティのライブラリや自作のユーティリティクラスを使用する必要がある点に留意ください。上記のサンプルコードではClipboardUtilというクリップボードユーティリティクラスを使用していますが、必要に応じて他の方法を選択してください。

bannerAds