我有一个经常使用启动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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。