2009-05-19 24 views
5

Mis usuarios pueden adjuntar documentos a varias entidades en la aplicación. Por supuesto, si el usuario A adjunta un archivo .TIFF, el usuario B puede no tener un visor para ese tipo de archivo.¿Cómo abrir el cuadro de diálogo "Windows no puede abrir este archivo"?

Así que me gustaría ser capaz de abrir este diálogo:

alt text http://www.angryhacker.com/toys/cannotopen.png

Mi solicitud es C# con VS2005.
Actualmente realizo el proceso. Comience y pase el nombre del archivo. Si no se encuentra ninguna asociación, arroja una excepción.

Respuesta

7

Esto debe hacerlo:

System.Diagnostics.Process p = new System.Diagnostics.Process(); 
p.StartInfo.FileName = "rundll32.exe"; 
p.StartInfo.Arguments = "shell32.dll,OpenAs_RunDLL " + yourFileFullnameHere; 

p.Start(); 
+0

El problema con este enfoque es que hace aparecer el cuadro de diálogo cada vez. Supongo que debería ejecutar este código si obtengo una Win32Exception indicando que no hay asociación. – AngryHacker

+0

Ah sí, debería haberlo señalado. –

+0

Tenga en cuenta que 'OpenAs_RunDLL' no está documentado y [no siempre funciona.] (Http://stackoverflow.com/questions/23566667/rundll32-shell32-dll) –

12
Process pr = new Process(); 
pr.StartInfo.FileName = fileTempPath; 
pr.StartInfo.ErrorDialog = true; // important 
pr.Start(); 
+0

Este es mejor, independiente de la plataforma. –

Cuestiones relacionadas