У меня есть приложение, которое часто использует запуск explorer.exe. Я хотел бы повторно использовать существующие/уже открытые окна проводника вместо создания нового каждый раз, когда я запускаю процесс.
Вот как выглядит мой код:
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo
{
UseShellExecute = true,
FileName = "Explorer.exe",
Arguments = myDirectoryPath
};
System.Diagnostics.Process.Start(info);
Я не видел переключателя командной строки для этого. Один из подходов, который я пробовал, заключался в том, чтобы просто убить любой 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 процесса, но и полного уничтожения проводника, так что даже панель задач исчезает.
Итак, как использовать существующее окно проводника, если оно существует, для запуска проводника?