2009-05-19 29 views
5

Moi użytkownicy mogą dołączać dokumenty do różnych podmiotów w aplikacji. Oczywiście, jeśli użytkownik A dołącza plik .TIFF, użytkownik B może nie mieć przeglądarki dla tego typu pliku.Jak wyświetlić okno dialogowe "Windows nie może otworzyć tego pliku"?

Więc chciałbym, aby móc wywołać to okno:

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

Moja aplikacja jest C# z VS2005.
Obecnie wykonuję Process.Start i przekazuję nazwę pliku. Jeśli nie zostanie znalezione żadne powiązanie, zgłasza wyjątek.

Odpowiedz

7

ten powinien zrobić:

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

p.Start(); 
+0

Problem z tego podejścia jest to, że otwiera okno dialogowe, za każdym razem. Myślę, że powinienem po prostu wykonać ten kod, jeśli otrzymam Win32Exception stwierdzający, że nie ma powiązania. – AngryHacker

+0

Ach tak, powinienem był to wskazać. –

+0

Należy zauważyć, że 'OpenAs_RunDLL' jest nieudokumentowanym i [nie zawsze działa.] (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

Ten jest lepszy, niezależny od platformy. –

Powiązane problemy