2009-10-30 2 views
1

У меня есть приложение C#, которое загружает файл и должно всегда показывать диалог «Открыть с», независимо от того, является ли расширение известным расширением или нет.C# открыть файл всегда показывать диалог «Открыть с»

Я попытался

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

с использованием системы; с использованием System.Diagnostics; с использованием System.IO; public static void ShowOpenWithDialog (строка) { var args = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.System), "shell32.dll"); args + = ", OpenAs_RunDLL" + путь; Process.Start ("rundll32.exe", args); } Этот код, похоже, работает на Win8 и Win7, может ли кто-нибудь подтвердить на Vista и XP – rekna

Смежные вопросы