C# 获取资源管理器.exe返回文件路径



在我的C#应用程序中(使用Visual Studio 2010 ultimate),用户需要选择某个文件。我创建了一个基本的文件浏览器,它几乎可以工作,但看起来不是很好。

我被要求使用标准的Windows文件资源管理器。

我知道如何打开它:

Process.Start("explorer.exe");

但是如何获取从中返回的文件路径?

为了选择文件,Net Framework 提供了 OpenFileDialog 组件。您可以在此处查看 MSDN 的参考资料

但基本上,您所要做的就是:

创建 OpenFileDialog 的实例

using(OpenFileDialog openFileDialog1 = new OpenFileDialog())
{

设置初始属性

    openFileDialog1.InitialDirectory = "c:\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;

打开调用 ShowDialog 的控件,等待用户的 OK 按下并获取所选文件

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        string fileSelected = openFileDialog1.FileName;
    }
}

请注意 OpenFileDialog() 周围的 using 语句,虽然不是绝对必要的,但这将确保对话框的释放

你考虑过OpenFileDialog吗?

http://msdn.microsoft.com/en-us/library/aa984392(v=vs.71).aspx

您应该使用 OpenFileDialog 类。

也许你可以说服你的客户接受一个标准的探索者对话。您的客户很可能不知道他在要求什么。

在 WPF 中,您将使用与此相关的内容:

OpenDialog for WPF

在 Froms 中,您将使用与此相关的内容:

http://www.dotnetperls.com/openfiledialog

这有点复杂,因为"explorer.exe"位于%PATH%系统变量中,而可执行路径可能没有存储在Windows中的任何位置(在我看来,也许我错了)。

我知道的所有版本的Windows中的"资源管理器.exe"都位于由%WINDIR%系统变量定义的目录中。您可以通过方法获取该变量:

Environment.GetEnvironmentVariable()

并添加字符串"资源管理器.exe"。

这是简单的方法。


更复杂的方法:

您可以使用WMI找到已经在运行的资源管理器.exe进程的完整路径 - 稍微复杂一点,但它的方法更正确。

更多信息在这里:如何获取运行进程的完整路径

最新更新