Windows のツール Process Monitor はかなり使えるという話!
Process Monitor(プロセスモニター)でスリープ中のイベントをキャップチャーする手順の概略は「スリープ中のノート PC が途中で目をさますのは Windows Update が原因だった!」(「参照ページ」)の中で簡単に説明した。
プロセスモニター を使ったことのある人にはそちらの説明で十分かと思うが、初めて使う人に対しては説明が足りていないと思うので、今回の記事ではツールバーの幾つかのボタンの機能に絞って、少しだけ詳しく説明する。
スリープ中のイベントのキャプチャーの手順は参照ページの記述に付け加える所はないので、箇条書きの部分をまるごとそちらから転載(てんさい)して、少し楽をしている。
観測の手順(参照ページからの転載):
スリープ開始:
- 1)プロセスモニターを起動する。
- 2)[ Process Monitor のフィルタ ] ダイアログを表示して、不要なフィルタを使用不能に設定 / 削除するか、またはすべてのフィルタをリセットする。
- 3)PC のスリープを開始する。
スリープ終了:
- 4)PC のスリープを終了する。
- 5)プロセスモニターのイベントキャプチャーを停止する。
- 6)イベントビューアーでスリープ開始時刻と終了時刻を取得する。
- 7)[ Process Monitor のフィルタ ] ダイアログの [ これらの条件に一致する項目を表示 ] ドロップダウンで [ 日付と時刻(&)] を選択する。
- 8)スリープ開始 / 終了時刻を使ってフィルタを設定する。
- 9)結果を保存する。
Process Monitor のボタン:
- イベントのキャプチャー
下の図でマウスカーソルが置かれているのが [ 記録(Ctrl + E)] ボタンだ。
このボタンを含む 3 個のグループのボタンは、 左から次の順番で並んでいる。
- [ 記録(Ctrl + E)] : イベントキャプチャーの開始 / 停止
- [ 自動スクロール(Ctrl + A)]
- [ クリア(Ctrl + X)]
ボタンの動作はすべて交互動作(オルタナティブ)で、赤いバツ印が表示されている時は「停止」状態となる。
- フィルタその 1
フィルタについてちょっと一言 ――
私は最初、プロセスモニターのフィルタは、キャプチャーするイベントそのものを選択する仕組みだと勘違いしていた。
そうじゃなくて、キャプチャーしたすべてのイベントからウインドウに表示したいものだけを抽出する機能――つまりビューのことだと気付いてから、キャプチャー開始前にフィルタリングのことで悩むことがなくなった。
下の図で、マウスカーソルでポイントしているボタンから始まる 3 個のボタンのグループは、左から次の順番で並んでいる。
- [ フィルタ(Ctrl + L)] : [ Process Monitor のフィルタ ] ダイアログを開く
- [ 強調表示(Ctrl + H)] : [ Process Monitor の強調表示 ] ダイアログを開く
- [ ウインドウのプロセスを含む ]
きめ細かくフィルタをかける時は、これらのボタンで該当するダイアログを表示して条件を設定する。[ ウインドウのプロセスを含む ] ボタンについては後で説明する。
[ Process Monitor のフィルタ ] ダイアログ:
次の図は、参照ページで説明した [日付と時刻 ] のフィルタをかけた状態を示している。1 行目は [ Include ] だが、2 行目のフィルタが [ Exclude ] になっているのがお分かり頂けるだろう。
日付フィルタの値の設定については参照ページの方で説明しているので、そちらの方を参考にして頂きたい。
私が設定したフィルタ以外に [ Exclude ] 設定されているフィルタは、全部デフォルトの設定だ。
[ Process Monitor の強調表示 ] ダイアログの説明は省略させて頂く。
- フィルタその 2
下の図の、ポイントされているボタンを含む 5 個のボタンのグループは、左から次の順番で並んでいる。フィルタ対象項目は [イベント クラス ] だ。
- [ レジストリの活動を表示 ]
- [ ファイルシステムの活動を表示 ]
- [ ネットワーク活動を表示 ]
- [ プロセスとスレッドの活動を表示 ]
- [ プロフィルイベントの表示 ]
これらのボタンの動作もオルタナティブだ。
フィルター ON でボタンにブルーのスクリーンがかかる。
このボタンで OFF に設定されたイベントは、[ Process Monitor のフィルタ ] ダイアログの [ Exclude ] 対象として一覧表の末尾の方にリストアップされる。
5 番目の [ プロファイルイベントの表示 ] は、デフォルトでは非表示に設定されている。私はデフォルトのままで使っている。
- [ ウインドウのプロセスを含む ] ボタンの説明:
フィルタ機能の中でちょっと珍しくて面白いのが、この [ ウインドウのプロセスを含む ] ボタンだ。
このボタンは、デスクトップ上に表示されたウインドウ上で動作するソフトウエアのプロセス ID(PID)を、 [ Process Monitor のフィルタ ] ダイアログに追加する時に使う。
この機能自体は、スリープ中のイベントのキャプチャーという今回のテーマとは関係がないように見えるが、一概にそうとも言い切れないような気がする。
もし関係がないとしても、覚えておいて損はないえらく便利な機能だ。
デフォルトでは [ Include ] に設定されるが、自分で [ Exclude ] に設定しなおしても良いワケだ。つまりウインドウその物――または逆にウインドウ以外のバックグラウンドプロセス――のモニタリングが、間違いなく素早く実行できるということになる。
[ ウインドウのプロセスを含む ] ボタンの使い方:
- フィルタ条件に加えたいソフト(対象ウインドウ)を起動する。
- [ ウインドウのプロセスを含む ] ボタンを左クリックし続ける。
- 対象ウインドウにフォーカスが切り替わったことを確認して、ボタンを対象ウインドウまでドラッグする。
- 対象ウインドウの調査したい部分にボタンをドロップする。
この図ではマウスカーソルがボタンのアイコンに変わっている様子が見えないが、秀丸エディタのエディットエリアが強調表示されているのは見える。これがドロップ直前の対象ウインドウの様子だ。
本題とはまったく関係ないことだが、このテストで秀丸エディタのウインドウが HIDEMARU.exe と Hidemaru.exe という 2 個のコンポーネント(プロセス)で構成されていることが分かった。
つまりそういう区別をつけたい時に、例えば「Chrome のウインドウはいったいどの Chorme.exe なんだ?」ということをハッキリさせたいような時にちょっと使ってみる、というのでも良いと思う。