2009-05-19 33 views
5

Người dùng của tôi có thể đính kèm tài liệu vào các thực thể khác nhau trong ứng dụng. Tất nhiên, nếu người dùng A đính kèm tệp .TIFF, người dùng B có thể không có người xem cho loại tệp đó.Cách hiển thị hộp thoại "Windows không thể mở tệp này"?

Vì vậy, tôi muốn để có thể hiển thị hộp thoại này:

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

ứng dụng của tôi là C# với VS2005.
Hiện tại tôi đang xử lý. Bắt đầu và chuyển tên tệp. Nếu không có liên kết được tìm thấy, nó ném một ngoại lệ.

Trả lời

7

này nên làm điều đó:

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

p.Start(); 
+0

Vấn đề với cách tiếp cận này là nó sẽ làm xuất hiện hộp thoại mỗi lần. Tôi đoán tôi chỉ nên thực thi mã này nếu tôi nhận được một Win32Exception nói rằng không có hiệp hội. – AngryHacker

+0

À vâng, tôi nên chỉ ra điều này. –

+0

Lưu ý rằng 'OpenAs_RunDLL' không có giấy tờ và [không phải lúc nào cũng hoạt động.] (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

Nền tảng này tốt hơn, độc lập hơn. –

Các vấn đề liên quan