c# - 如何设置现有的 Explorer.exe 实例来选择文件?

标签 c#

我可以使用以下命令轻松地让资源管理器打开并选择一个文件:

string argument = @"/select, " + filePath;
System.Diagnostics.Process.Start("explorer.exe", argument);

但是当我打开下一个文件时,我会得到一个新的资源管理器实例。这可能会导致我们的用户在密集的一天结束时打开数百个探索器。

我怎样才能让它重用一个已经打开的资源管理器实例来选择我想要的文件?

Visual Studio 可以在您右键单击选项卡并选择打开包含的文件夹... 时执行此操作,前提是资源管理器已在同一目录中打开。它是如何做到这一点的?

最佳答案

使用 ExplorerBrowser 对象的 embedding the Explorer window into your application 怎么样?这样,当您想要显示不同的文件夹时,您可以通过在不同的文件夹上调用 IExplorerBrowser::BrowseToObject 来继续重用该窗口。

尝试重新导航现有的资源管理器窗口是有问题的,因为您不知道用户在您不在的时候对该窗口做了什么。也许他们使用“文件夹” Pane 转到其他文件夹,然后您只是从他们下面撕下该文件夹并将其发送到其他地方。或者也许他们关闭了它!打开一个新的资源管理器窗口是一种即发即弃的事情。如果您想保留对窗口的控制,则需要进行更明确的控制(例如,通过上面的 ExplorerBrowser)。

关于c# - 如何设置现有的 Explorer.exe 实例来选择文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182494/

相关文章:

c# - 线程测试题

c# - Aweber C# Api 未授权 - AccessToken key 无效

C# 多线程应用程序 - 结构?

c# - 在 C# 中对 boolean 变量进行序列化反序列化的最简单方法是什么?

c# - 将多个列表添加到一个列表

c# - Microsoft Graph - 通过 C# 保存文件附件?

C# 转义大括号不能与格式修饰符一起使用?

c# - 将 float 转换为 decimal 在 C# 中会失去精度

c# - 确保属性仅与静态方法一起使用

c# - MethodInvoker 的这两种用法之间的区别