启动explorer.exe而不创建窗口C#

时间:2016-01-15 00:50:22

标签: c# windows process

我有一个程序重新启动explorer.exe
这是我的杀死explorer.exe

的代码
Process[] process = Process.GetProcessesByName("explorer.exe");

foreach (Process theprocess in process) {
    theprocess.Kill();
}

以下代码成功运行并停止explorer.exe
这是我启动explorer.exe

的代码
Process.Start("explorer");

这也有效,但它也会创建Windows资源管理器窗口以及启动explorer.exe进程。

我的问题是,如何在不创建Windows资源管理器窗口的情况下启动explorer.exe?立即关闭资源管理器窗口也可以视为答案。

1 个答案:

答案 0 :(得分:1)

我不知道如何在不打开窗口的情况下启动资源管理器,但您可以使用ShellWindows中的SHDocVW.dll界面枚举资源管理器窗口as explained here,然后关闭窗口,因为它弹出:

// Kill explorer
Process[] procs = Process.GetProcessesByName("explorer");
foreach (Process p in procs)
{
    p.Kill();
}

// Revive explorer
Process.Start("explorer.exe");

// Wait for explorer window to appear
ShellWindows windows;
while ((windows = new SHDocVw.ShellWindows()).Count == 0)
{
    Thread.Sleep(50);
}

foreach (InternetExplorer p in windows)
{
    // Close explorer window
    if(Path.GetFileNameWithoutExtension(p.FullName.ToLower()) == "explorer")
        p.Quit();
}