【问题标题】:C# get explorer.exe to return a file pathC# 获取 explorer.exe 以返回文件路径
【发布时间】:2012-10-10 14:54:48
【问题描述】:

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

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

我知道怎么打开它:

Process.Start("explorer.exe");

但是我怎样才能得到从它返回的文件路径呢?

【问题讨论】:

  • 您应该改用OpenFileDialog class(假设您使用 WinForms 作为您的 GUI 库)。
  • explorer.exe 不是打开/选择文件对话框。它使您可以使用计算机工作。请改用 OpenFileDialog!

标签: c# windows-explorer


【解决方案1】:

为了选择一个文件,Net Framework 提供了 OpenFileDialog 组件。 你可以在MSDN here看到参考

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

创建一个 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 语句,虽然这不是绝对必要的,但这将确保对话框的处置

【讨论】:

  • 我更愿意将其放入 using 块中,例如 using ( var ofd = new OpenFileDialog() ) { ... }
【解决方案2】:

【讨论】:

  • 我不知道它存在,谢谢.. 我的搜索没有出现这种情况
【解决方案3】:

您应该使用OpenFileDialog 类。

【讨论】:

    【解决方案4】:

    也许您可以说服您的客户接受标准的浏览器对话。 您的客户很可能并不完全知道他的要求。

    在 WPF 中,你会根据这个使用一些东西:

    OpenDialog for WPF

    在 Froms 中,你会根据这个使用一些东西:

    http://www.dotnetperls.com/openfiledialog

    【讨论】:

      【解决方案5】:

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

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

      Environment.GetEnvironmentVariable()
      

      并添加字符串“explorer.exe”。

      这很简单。


      更复杂的方法:

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

      更多信息在这里: How to get full path of running process

      【讨论】:

        猜你喜欢
        • 2014-10-15
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        • 2017-11-08
        • 2013-07-05
        • 1970-01-01
        • 2016-06-28
        • 1970-01-01
        相关资源
        最近更新 更多