2009-05-19 3 views
5

Meine Benutzer können Dokumente an verschiedene Entitäten in der Anwendung anhängen. Wenn Benutzer A eine TIFF-Datei anhängt, verfügt Benutzer B möglicherweise nicht über einen Viewer für diesen Dateityp.Wie kann ich den Dialog "Windows kann diese Datei nicht öffnen" aufrufen?

So würde Ich mag Lage sein, diesen Dialog zu bringen:

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

Meine Anwendung ist C# mit VS2005.
Momentan mache ich Process.Start und gebe den Dateinamen ein. Wenn keine Verknüpfung gefunden wird, wird eine Ausnahme ausgelöst.

Antwort

7

Dies sollte es tun:

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

p.Start(); 
+0

Das Problem bei diesem Ansatz ist, dass es das Dialogfeld jedes Mal bringt. Ich denke, ich sollte diesen Code nur ausführen, wenn ich eine Win32Exception bekomme, die besagt, dass es keine Assoziation gibt. – AngryHacker

+0

Ah ja, ich hätte darauf hinweisen sollen. –

+0

Beachten Sie, dass 'OpenAs_RunDLL' nicht dokumentiert ist und [nicht immer funktioniert.] (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

Dies ist besser, plattformunabhängig. –

Verwandte Themen