2009-11-17 39 views
112

En una aplicación WPF, cuando un usuario hace clic en un botón, quiero abrir el explorador de Windows en un determinado directorio, ¿cómo puedo hacer eso?¿Cómo puedo abrir el Explorador de Windows en un directorio determinado desde una aplicación WPF?

Yo esperaría algo como esto:

Windows.OpenExplorer("c:\test"); 
+3

@DanM Esto claramente no es un duplicado del enlace que ha enumerado. En ese caso, el usuario ya sabe sobre process.start. En este caso, el usuario no tiene idea de qué usar para abrir una carpeta. Explique su proceso de pensamiento detrás de marcar esto como un duplicado. Estaré esperando. –

Respuesta

235

¿Por qué no Process.Start(@"c:\test");?

+8

Nota: Puede usar esto para ejecutar otras aplicaciones también. 'Process.Start (" calc.exe ");' ejecutará la Calculadora. Puede pasarle la ruta completa a un ejecutable y lo ejecutará. –

+1

LOL, sí, ¿por qué no? Curioso, tenía Application.Run en mi cabeza, no podía llegar al omnipresente Proceso. Comenzar y pensó que WPF estaba jugando conmigo. – Abel

+0

Esto me ayudó cuando estaba tratando de cargar el explorador y agregar la carpeta como un directorio de trabajo usando process.start. Gracias por la respuesta. –

6

Puede utilizar System.Diagnostics.Process.Start.

O use el WinApi directamente con algo como lo siguiente, que iniciará explorer.exe. Puede usar el cuarto parámetro para ShellExecute para darle un directorio de inicio.

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     ShellExecute(IntPtr.Zero, "open", "explorer.exe", "", "", ShowCommands.SW_NORMAL); 
     InitializeComponent(); 
    } 

    public enum ShowCommands : int 
    { 
     SW_HIDE = 0, 
     SW_SHOWNORMAL = 1, 
     SW_NORMAL = 1, 
     SW_SHOWMINIMIZED = 2, 
     SW_SHOWMAXIMIZED = 3, 
     SW_MAXIMIZE = 3, 
     SW_SHOWNOACTIVATE = 4, 
     SW_SHOW = 5, 
     SW_MINIMIZE = 6, 
     SW_SHOWMINNOACTIVE = 7, 
     SW_SHOWNA = 8, 
     SW_RESTORE = 9, 
     SW_SHOWDEFAULT = 10, 
     SW_FORCEMINIMIZE = 11, 
     SW_MAX = 11 
    } 

    [DllImport("shell32.dll")] 
    static extern IntPtr ShellExecute(
     IntPtr hwnd, 
     string lpOperation, 
     string lpFile, 
     string lpParameters, 
     string lpDirectory, 
     ShowCommands nShowCmd); 
} 

Las declaraciones provienen de la pinvoke.net website.

+1

sí, estaba recibiendo errores persiguiendo eso, no sabía acerca de huelga por cierto –

+1

que desafortunadamente solo funciona en respuestas/preguntas, pero no en comentarios ;-). Acabo de actualizar. – Abel

+0

+1 Utilizaré este código para iniciar otras aplicaciones, pero el Process.Start() fue exactamente lo que necesitaba. –

10

Esto debería funcionar:

Process.Start(@"<directory goes here>") 

O si le gustaría un método para ejecutar programas/archivos y/o carpetas abiertas:

 private void StartProcess(string path) 
    { 
     ProcessStartInfo StartInformation = new ProcessStartInfo(); 

     StartInformation.FileName = path; 

     Process process = Process.Start(StartInformation); 

     process.EnableRaisingEvents = true; 
    } 

y luego llamar al método y en el paréntesis ponga allí el directorio del archivo y/o la carpeta o el nombre de la aplicación. Espero que esto haya ayudado!

Cuestiones relacionadas