2009-05-19 9 views
5

I miei utenti possono allegare documenti a varie entità nell'applicazione. Ovviamente, se l'utente A allega un file .TIFF, l'utente B potrebbe non avere un visualizzatore per quel tipo di file.Come richiamare la finestra di dialogo "Windows non può aprire questo file"?

Così mi piacerebbe essere in grado di far apparire questa finestra di dialogo:

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

La mia domanda è C# con VS2005.
Attualmente eseguo il processo. Avvia e passa il nome del file. Se non viene trovata alcuna associazione, genera un'eccezione.

risposta

7

Questo dovrebbe farlo:

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

p.Start(); 
+0

Il problema di questo approccio è che porta in primo piano la finestra di dialogo ogni volta. Credo che dovrei solo eseguire questo codice se ottengo una Win32Exception che afferma che non esiste alcuna associazione. – AngryHacker

+0

Ah sì, avrei dovuto farlo notare. –

+0

Si noti che 'OpenAs_RunDLL' non è documentato e [non funziona sempre.] (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

Questo è il migliore, indipendente dalla piattaforma. –

Problemi correlati