どういうこと
今日も寒さで目が覚めて、超早起きしてしまった。(笑)
日中は雲多めの曇り時々晴れ。
本当に寒い!
自作プログラムで、ファイルExplorerを捉えるというのをやっていて、どういうこと?ということがあった。
例えば、7個のExplorerを起動させているのに、プログラムの方で捉えることが出来たのが4個とか。
さっぱりわからん...という感じで、きっとソースに問題があるのだろう、と思って見ていた。
が、おかしくなさそう。
それなりの時間が経過して、何気にタスクマネージャーを見てみた。
詳細の方ではなく、グラフィカルな方のプロセス一覧を見てみると、これが原因か!というのがわかった。
以下は例だけれど、エクスプローラーというのが5つに分かれている。

デスクトップ画面には、Explorerが8個あるんだけれど、プログラムの方で取得出来ているのは5個。
つまり、グループ状態のものが1つとしてまとめられてしまっていて、そのグループ化されているのは、一つのプロセスとしてまとめられているようだ。
だから、どんなにソースを見直しても、原因がわからなかったわけだ。
試しに、上記のグループ化されているもの、エクスプローラー(4)をタスク終了させると、一度に全部終了してしまう。
全て起動している時の状態。
エクスプローラー(4)をタスク終了させた後の状態。
1つプロセスが消えている。
それにしてもおかしい。
Explorerを独立して動作させるように設定しているはず。
そう思って、Explorerのオプションを見てみる。

確かに、「別のプロセスでフォルダーウィンドウを開く」にチェックが入っている。
全部独立して動作するのではない??
気になったので、どういう時に、グループ化されてしまうのか検証してみた。
結論を書くと、明示的に、explorer.exeに引数として何かを渡さないと、プロセスとして独立してくれないようだ。
どういうことかと言うと、
コマンドプロンプトで起動させればわかりやすい。
「explorer.exe L:\tmp」というように、引数としてフォルダを渡すと、独立したプロセスとして起動出来る。
一方、単に「explorer.exe」として起動すると、グループ化されてしまうようだ。
「Win+E」で起動しても同様。
また、必ずしもそうではないけれど、「explorer.exe L:\tmp」のように起動させたExplorer上で、フォルダを右クリックし、「新しいウィンドウで開く」で起動させると、独立することが多いようだ。
その独立して開いたExplorerから、同様のことをすると、今度はグループ化されてしまうことが多いようだ。
必ずしもこうだ、とは言い切れず、そういう傾向にある、としか言えない。(苦笑)
こんなこと意識してExplorerを起動している人なんていないと思うけれど、今回の一件で、ちょっぴり勉強になったのである。
もし、ファイルExplorerを安定して、というか、他のファイルExplorerを巻き込みたくない場合は、explorer.exeに引数を渡して起動するようにしよう。
ちなみに、VB.NETで言えば、「System.Diagnostics.Process.GetProcesses()」でプロセスをすべて取得しても、上記のグループ化されてしまったExplorerに関しては、グループが1つのプロセスとして認識されているので、それに属している他のExplorerは取得出来ない。
そういうものも取得したいなら、Windows APIの「FindWindow()」や「EnumWindows()」のようなものを使う必要性がある。
以上、あまり需要がなさそうな情報であった。(笑)
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- foobar2000 ver. 2.26(2026.10.06)
- なんでも丸めればいい、という風潮(2026.10.03)
- バージョンを知りたい(2026.09.29)
- 翻訳機能(2026.09.26)
- そろそろ(2026.09.09)


コメント