2009-10-30 7 views
1

J'ai une application C#, qui télécharge un fichier, et devrait toujours afficher la boîte de dialogue Ouvrir avec, même si l'extension est une extension connue ou non.C# fichier ouvert affiche toujours le dialogue "Ouvrir avec"

J'ai essayé

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

mais, lorsque je tente d'ouvrir un fichier .png, la boîte de dialogue « Ouvrir avec » ne montre pas et que le fichier est ouvert avec mon visionneuse d'image par défaut.

L'utilisateur devrait pouvoir choisir une application (par exemple, il veut peut-être éditer le fichier au lieu de le voir). Existe-t-il un moyen de forcer Vista à afficher le dialogue ouvert, afin que l'utilisateur puisse choisir?

Répondre

3

Cet article est ce que vous cherchez, je crois:

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

Le code devrait fonctionner dans Vista aussi.

+0

J'ai essayé cette solution aussi, mais ça donne des résultats encore plus mauvais sur Vista ... XP ne semble pas avoir ce problème. – rekna

+1

utilisant le système; en utilisant System.Diagnostics; en utilisant System.IO; public static void ShowOpenWithDialog (chemin de chaîne) { var args = Chemin.Combine (Environnement.GetFolderPath (Environment.SpecialFolder.System), "shell32.dll"); args + = ", OpenAs_RunDLL" + chemin; Process.Start ("rundll32.exe", arguments); } Ce code semble fonctionner sur Win8 et Win7 pourrait-on confirmer sur Vista et XP – rekna

Questions connexes