打开已选择指定文件的资源管理器窗口

时间:2010-10-08 02:52:16

标签: c# .net shell windows-explorer

我有一个应用程序,可以选择在文件所在的文件夹中显示所选文件。我的问题是,我该如何做到这一点?

为了澄清,如果我的程序中的用户选择了“Test.txt”文件,那么我想要弹出一个Windows资源管理器窗口并突出显示用户选择的文件。您可以在LimeWire和uTorrent中看到类似的行为。如果在这些程序中选择一个文件并选择“在文件夹中显示”,则会弹出一个Windows资源管理器窗口,其中突出显示并选择了该文件。我试图复制这种行为。

我尝试使用以下行:

System.Diagnostics.Process.Start("Explorer");

这将弹出Windows资源管理器窗口,但是,它似乎总是在“我的文档”文件夹中打开。

4 个答案:

答案 0 :(得分:26)

你走了,

string fileToSelect = @"C:\temp.img";
string args = string.Format("/Select, \"{0}\"", fileToSelect);

ProcessStartInfo pfi = new ProcessStartInfo("Explorer.exe", args);
System.Diagnostics.Process.Start(pfi);

注意:在之前添加\" ,在之后添加 {0}参数启用fileToSelect字符串包含空格(即“C:\ My Documents”)。

从这个线程:
Programmatically select multiple files in windows explorer

干杯,

答案 1 :(得分:2)

有一个记录在案的API:SHOpenFolderAndSelectItems。谁知道,当资源管理器不是默认shell时,它甚至可能做正确的事情:)

答案 2 :(得分:0)

您可以在字符串中构造文件夹路径,然后将其发送到Windows命令行进行浏览。

http://www.c-sharpcorner.com/UploadFile/DipalChoksi/ShellCommandsInCS12032005042031AM/ShellCommandsInCS.aspx

答案 3 :(得分:0)

对于VB:

Dim q as Char = ControlChars.Quote
Dim path As String = q & "D:\examples\test doc.txt" & q
Dim psi as New ProcessStartInfo("Explorer.exe", "/Select, " & path)
Process.Start(psi)

正如其他人指出的那样,包含空格的路径必须用引号引起来。