Открытие окна проводника с выбранным файлом

У меня есть приложение, которое имеет возможность показывать выбранный файл в папке, в которой находится файл. Мой вопрос: как мне это достичь?

Чтобы уточнить, если пользователь в моей программе выбрал файл "Test.txt", я хочу, чтобы окно Windows Explorer всплыло и выделило выбранный пользователем файл. Вы можете увидеть подобное поведение в LimeWire и uTorrent. Если вы выберете файл в любой из этих программ и выберите "Показать в папке", он откроет окно проводника Windows с выделенным и выбранным файлом. Я пытаюсь дублировать это поведение.

Я попытался использовать следующую строку:

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

Появится окно Windows Explorer, однако оно всегда открывается по умолчанию в папке "Мои документы".

Ответ 1

Здесь вы идете,

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:\Мои документы" ).

Из этой темы:
Программный выбор нескольких файлов в проводнике Windows

Приветствия,

Ответ 2

Для этого есть документированный API: SHOpenFolderAndSelectItems. Кто знает, он может даже сделать правильные вещи, когда проводник не является оболочкой по умолчанию:)

Ответ 4

Для 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)

Как уже отмечали другие, пути, содержащие пробелы, должны быть заключены в кавычки.