我目前正在开发一个 Java 项目,该项目处理中断问题。我的目标是了解何时是打断用户的好时机。目前,我当前的方法是列出不应被中断的窗口列表,并将其与每 3 秒获得焦点的窗口进行比较,然后使用键盘 Hook 来检测它们是否正在打字。
但是,我遇到了 Microsoft Word 和许多其他程序没有固定窗口标题的问题。如果用户想要将 Microsoft Word 添加到不中断列表中,那么它只会添加当前正在处理的文件名,而不是可用于唯一标识 Microsoft Windows 的名称。另一个例子是 twitter,如果用户将 twitter
添加到列表中,那么它不会认为 (15) twitter
是等效的。
是否有任何替代方法可用于检测窗口标题属于哪个程序,或者是否有可能适合此问题的字符串搜索方法?
我也对如何做到这一点的全新方法持开放态度。
最佳答案
我认为比使用窗口标题更好的答案是获取实际的进程 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
}
关于java - 比较 Windows 操作系统中具有共同结构但不完全相同的窗口标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663595/