0

我目前正在用 Java 开发一个处理中断的项目。我的目标是了解何时是打断用户的好时机。目前,我当前的方法是列出不应中断的窗口,并将其与每 3 秒聚焦的窗口进行比较,然后使用键盘挂钩来检测它们是否正在打字。

但是,我遇到了 Microsoft Word 和许多其他程序没有固定窗口标题的问题。如果用户想要将 Microsoft Word 添加到不中断列表中,那么它只会添加当前正在处理的文件名,而不是可以用来唯一标识 Microsoft Windows 的文件名。另一个例子是 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 回答