加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:14:55 所属栏目:百科 来源:网络整理
导读:我有一个经常使用启动explorer.exe的应用程序.我想重新使用现有/已经打开的资源管理器窗口,而不是每次启动该过程时都创建一个新窗口. 这是我的代码的样子: System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo{ UseShellE
我有一个经常使用启动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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读