explorer.exeの起動を頻繁に使用するアプリケーションがあります。私は、プロセスを開始するたびに新しい/既存のエクスプローラウィンドウを作成するのではなく、既存の/既に開いているエクスプローラウィンドウを再利用したいと思います。ここでエクスプローラを起動するために既存の/既に開いているWindowsエクスプローラウィンドウを再利用する方法
は私のコードは次のようになります。
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo
{
UseShellExecute = true,
FileName = "Explorer.exe",
Arguments = myDirectoryPath
};
System.Diagnostics.Process.Start(info);
が、私はこれを行うにはcommand-lineスイッチを見ていません。私が試した一つのアプローチは、単に任意の1つの既存のエクスプローラのプロセスを強制終了し、新しいものと交換することでした:
var processes = System.Diagnostics.Process.GetProcesses(Environment.MachineName);int kills = 0;
for (int i = 0; i < processes.Length; i++)
{
System.Diagnostics.Process p = processes[i];
if (p.ProcessName == "explorer" && kills < 1)
++kills
p.Kill();
}
しかし、これはただ1つのプロセスを殺すが、そのように完全エクスプローラを殺していないの不要な効果になりさえタスクバーが消えます。
エクスプローラウィンドウが存在する場合は、既存のエクスプローラウィンドウを使用してExplorerを起動するにはどうすればよいですか?
あなたのユーザーが他の理由でディレクトリに開いているエクスプローラウィンドウを持っていて、そのディレクトリから取り出した?このアプローチがユーザーに不満を抱かせる原因になると思いますか? – Phil
これは有効な懸案事項ですが、私のユーザーは毎回自分のアプリで毎回新しいコピーを開くのではなく、既存のエクスプローラウィンドウを再利用したかったと言っています。さもなければ、私はどのエクスプローラウィンドウが私のアプリによって開かれたのかを正確に判断し、それらを再利用するだけです。 –
も参照してくださいhttp://stackoverflow.com/questions/3010305/programmatically-selecting-file-in-explorer – rogerdpack