どのようにして 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というクリップボードユーティリティクラスを使用していますが、必要に応じて他の方法を選択してください。