2009-10-30 56 views
1

我有一個c#應用程序,它下載一個文件,並且應該總是顯示「打開方式」對話框,而不管該擴展名是否是已知的擴展名。c#打開的文件總是顯示「Open With」對話框

我試圖

global::System.Diagnostics.Process.Start("rundll32.exe", 
       string.Format("shell32.dll,OpenAs_RunDLL \"{0}\"", filename)); 

,但是,當我嘗試打開一個.png文件,「打開方式」對話框不顯示和文件被用我的默認圖像查看器中打開。

用戶應該能夠選擇一個應用程序(例如,也許他想編輯文件而不是查看它)。有沒有辦法強制Vista顯示打開對話框,所以用戶可以選擇?

回答

3

這篇文章是你在找什麼,我相信:

Calling the Open With dialog box from your application, using C#

的代碼應該在Vista中工作了。

+0

我也試過這個解決方案,但它在Vista上給出的結果更糟...... XP似乎沒有這個問題。使用系統的 – rekna

+1

; using System.Diagnostics; using System.IO; public static void ShowOpenWithDialog(string path){var_args = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System),「shell32.dll」); args + =「,OpenAs_RunDLL」+ path; Process.Start(「rundll32.exe」,args); }這段代碼似乎可以在Win8和Win7上運行,任何人都可以在Vista和XP上進行確認 – rekna