Recherche de l'application par défaut pour les types de fichiers sous Windows
Les développeurs doivent souvent trouver l'application par défaut associée à un type de fichier spécifique. Ceci est important pour des tâches telles que l'appel de l'éditeur par défaut pour une extension de fichier particulière.
Pour y parvenir, on peut envisager d'utiliser System.Diagnostics.Process.Start pour ouvrir un fichier dans son application par défaut. Cependant, cette approche est limitée et ne permet pas l'ouverture de fichiers avec des extensions non standards.
La solution fiable consiste à utiliser la fonction AssocQueryString de l'API Win32. Cette fonction permet d'interroger le système d'exploitation pour l'application par défaut associée à un type de fichier.
Voici comment exploiter AssocQueryString en C# :
using System.Runtime.InteropServices; [DllImport("Shlwapi.dll", CharSet = CharSet.Unicode)] public static extern uint AssocQueryString( AssocF flags, AssocStr str, string pszAssoc, string pszExtra, [Out] StringBuilder pszOut, ref uint pcchOut ); [Flags] public enum AssocF { // ... } public enum AssocStr { // ... } public static string AssocQueryString(AssocStr association, string extension) { const int S_OK = 0; const int S_FALSE = 1; uint length = 0; uint ret = AssocQueryString(AssocF.None, association, extension, null, null, ref length); if (ret != S_FALSE) { throw new InvalidOperationException("Could not determine associated string"); } var sb = new StringBuilder((int)length); ret = AssocQueryString(AssocF.None, association, extension, null, sb, ref length); if (ret != S_OK) { throw new InvalidOperationException("Could not determine associated string"); } return sb.ToString(); }
En appelant AssocQueryString et en spécifiant l'association souhaitée, vous pouvez récupérer le chemin complet de l'application par défaut. Cela vous permet d'interagir directement avec l'éditeur ou le processeur par défaut pour un type de fichier particulier, même si le fichier n'a pas d'extension standard.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!