私の同僚の1人は、それぞれ5分ほどで現在のウィンドウに集中できなくなります。今、私はどのプロセスが焦点を盗むのだろうかと思っています
私はこのクールなアプリケーションを見つけました focus.exe 現在のフォアグラウンドウィンドウを一覧表示します-フォーカスのあるウィンドウ。
フォーカスが盗まれたときはいつでも、プログラムはこの情報を印刷しました:
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がログに記録されることです。
そこで、作成されるすべての新しいプロセスをキャッチし、プロセス情報を出力するPowerShellOnelinerを作成しました。
$p = ps ; while (1) { ps | ? { $_.id -notin $p.Id } ; sleep -milliseconds 1 }
しかし、これはPIDのいずれもキャッチしませんでしたfocus.exe
指摘した。
開始できなかったが、PIDを取得したプロセスをキャッチするにはどうすればよいですか?
わかりました。PowerShellが出力しすぎて上書きされたため、PIDが認識されませんでした。そのため、新しいプロセスをout-file
しただけで、ログにPIDが表示されました。
$p = ps ; while (1) { ps | ? { $_.id -notin $p.Id } | out-file C:\install\PID.txt -append ; sleep -milliseconds 1 }
フォーカスを盗むプロセスは、Aviraのバックグラウンドタスクでした。 :)
編集:ここでは、ログファイルを書き込まないソリューションです。 $p
を更新する必要があったので、新しい各プロセスは1回だけ印刷されます
$p = ps ; while (1) { ps | ? { $_.id -notin $p.Id } ; $p = ps ; sleep -milliseconds 1 }