2009-10-30 136 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