0

私は現在、Java で中断を扱うプロジェクトに取り組んでいます。私の目的は、いつユーザーに割り込むのがよいかを知ることです。現時点で私の現在の方法は、中断してはならないウィンドウのリストを作成し、それを 3 秒ごとにフォーカスされているウィンドウと比較し、キーボード フックを使用して入力しているかどうかを検出することです。

しかし、Microsoft Word やその他の多くのプログラムではウィンドウ タイトルが固定されていないという問題に遭遇しました。ユーザーが Microsoft Word を中断禁止リストに追加したい場合、Microsoft Windows を一意に識別するために使用できる名前ではなく、現在作業中のファイル名を追加するだけです。もう 1 つの例は Twitter です。ユーザーがリストに追加した場合、同等twitterとは見なされません。(15) twitter

ウィンドウのタイトルがどのプログラムに属しているかを検出するために使用できる代替方法、またはこの問題に理想的な文字列検索方法はありますか?

私はまた、これをどのように行うことができるかについて、まったく新しい方法にもオープンです。

4

1 に答える 1

2

ウィンドウのタイトルを使用するよりも良い答えは、実際のプロセス ID を取得し、中断されないようにプロセスのリストに保存することだと思います。そうすれば、名前が変わる心配はありません。

ここで行われているような何かがうまくいくはずです: http://www.golesny.de/p/code/javagetpid

最適ではない PID を取得する別の方法:

その例を理解できない場合... PIDを取得する別のオプションは次のとおりです。

String line = "";
Process p = Runtime.getRuntime().exec(System.getenv("windir") +"\\system32\\"+"tasklist.exe -v");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
        System.out.println(line); // this should print out process names with PID

}
于 2013-03-27T16:28:44.400 に答える