2009-05-19 19 views
5

Kullanıcılarım, uygulamadaki çeşitli varlıklara belgeleri ekleyebilir. Elbette, kullanıcı A bir .TIFF dosyası eklerse, B kullanıcısı bu dosya türü için bir görüntüleyiciye sahip olmayabilir."Windows bu dosyayı açamıyor" iletişim kutusu nasıl açılır?

Yani bu iletişim kutusunu açmak için muktedir istiyorum:

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

başvurum VS2005 ile C# olduğunu.
Şu anda Process.Start işlemini yapıyorum ve dosya adını aktarıyorum. İlişkilendirme bulunamazsa, bir istisna atar.

cevap

7

Bu yapmalıyım:

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

p.Start(); 
+0

Bu yaklaşımdaki sorun iletişim kutusunu her zaman getirir olmasıdır. Ben herhangi bir ilişki olmadığını belirten bir Win32Exception alırsam, bu kodu çalıştırmalıyım sanırım. – AngryHacker

+0

Ah evet, bunu işaret etmeliydim. –

+0

'OpenAs_RunDLL' belgesiz olduğunu ve her zaman çalışmadığını unutmayın. (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

Bu daha iyi, platformdan bağımsız. –

İlgili konular