2010-10-08 13 views
11

Tengo una aplicación que tiene una opción para mostrar el archivo seleccionado en la carpeta en la que reside el archivo. Mi pregunta es, ¿cómo logro esto?Abrir una ventana del explorador con el archivo designado seleccionado

Para aclarar, si un usuario en mi programa seleccionó el archivo "Test.txt", entonces quiero que aparezca una ventana del Explorador de Windows y resalte el archivo que el usuario seleccionó. Puede ver un comportamiento similar en LimeWire y uTorrent. Si selecciona un archivo en cualquiera de esos programas y selecciona "Mostrar en la carpeta", aparece una ventana del Explorador de Windows con el archivo resaltado y seleccionado. Estoy tratando de duplicar este comportamiento.

He intentado utilizar la siguiente línea:

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

Esto emergente de la ventana del Explorador de Windows, sin embargo, siempre parece abrirse de forma predeterminada en la carpeta "Mis documentos".

Respuesta

25

Aquí tiene,

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

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

Nota: La adición de\" antes y después de {0} el parámetro permite a la cadena fileToSelect para contener espacios (es decir, "C: \ Mis documentos").

De este Tema:
Programmatically select multiple files in windows explorer

Cheers,

2

Existe una API documentada para hacer esto: SHOpenFolderAndSelectItems. Quién sabe, incluso podría hacer lo correcto cuando el explorador no es el shell predeterminado :)

Cuestiones relacionadas