系统相关
首页 > 系统相关> > c# – 如何重新使用现有/已打开的Windows资源管理器窗口来启动资源管理器

c# – 如何重新使用现有/已打开的Windows资源管理器窗口来启动资源管理器

作者:互联网

我有一个经常使用启动explorer.exe的应用程序.我想重新使用现有/已经打开的资源管理器窗口,而不是每次启动该过程时都创建一个新窗口.

这是我的代码的样子:

System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo
{
    UseShellExecute = true,
    FileName = "Explorer.exe",
    Arguments = myDirectoryPath
};
System.Diagnostics.Process.Start(info);

我没有看到command-line开关这样做.我尝试过的一种方法是简单地杀死任何一个现有的资源管理器进程并用一个新进程替换它:

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窗口(如果存在)来启动资源管理器?

解决方法:

IShellWindows COM接口将为您提供打开资源管理器窗口的列表,您可以获取并设置任何资源管理器窗口的地址,有关C示例,请参阅this blog entry.我怀疑.NET有一个本机实现,所以你可能需要PInvoke

标签:c,windows,process,windows-explorer
来源: https://codeday.me/bug/20190710/1420736.html