我的一位同事每隔 5 分钟左右就会失去对当前窗口的关注。现在我想知道哪个进程窃取了焦点
我发现了这个很酷的应用程序焦点程序它将列出当前的前台窗口 - 具有焦点的窗口。
每当焦点被夺走时,程序就会打印以下信息:
9524:Could not open process | Wed Oct 18 14:57:15 2017
19304:Could not open process | Wed Oct 18 14:57:15 2017
如您所见,焦点被无法打开的进程夺走,因此这些信息对我没什么帮助。对我有帮助的是,它仍然记录了进程的 PID。
因此我编写了一个小型 PowerShell Oneliner,它可以捕获创建的每个新进程并输出进程信息:
$p = ps ; while (1) { ps | ? { $_.id -notin $p.Id } ; sleep -milliseconds 1 }
focus.exe
但这并没有捕捉到任何指出的PID 。
我如何才能捕获无法启动但仍有 PID 的进程?
答案1
好的,我明白了,PID 只是没有被识别,因为 PowerShell 输出了太多内容而导致它被覆盖了。所以,当我刚刚out-file
启动新进程时,我就可以在日志中看到 PID。
$p = ps ; while (1) { ps | ? { $_.id -notin $p.Id } | out-file C:\install\PID.txt -append ; sleep -milliseconds 1 }
顺便说一下,焦点窃取过程是 Avira 的后台任务。:)
编辑:这是一个无需写入日志文件的解决方案。我只需要更新,$p
这样每个新进程只会打印一次
$p = ps ; while (1) { ps | ? { $_.id -notin $p.Id } ; $p = ps ; sleep -milliseconds 1 }