Maison >développement back-end >C++ >Comment puis-je déterminer par programme l'application par défaut pour un type de fichier spécifique sous Windows ?

Comment puis-je déterminer par programme l'application par défaut pour un type de fichier spécifique sous Windows ?

DDD
DDDoriginal
2025-01-04 20:09:40197parcourir

How Can I Programmatically Determine the Default Application for a Specific File Type on Windows?

Comment identifier l'application par défaut pour un type de fichier spécifique sous Windows

Lors du développement d'applications qui interagissent avec différents types de fichiers, il devient nécessaire pour identifier l'application par défaut associée à l'ouverture de ces fichiers. Pour y parvenir, Windows propose une méthode qui exploite les fonctions spécifiques à la plate-forme.

Le registre, bien que couramment utilisé, n'est pas un moyen fiable pour récupérer ces informations, comme le démontrent les instabilités de Windows 8.1. Par conséquent, l'approche préférée consiste à utiliser l'API Win32, en particulier la fonction AssocQueryString.

L'utilisation d'AssocQueryString nécessite d'importer les définitions nécessaires à partir de la bibliothèque Shlwapi.dll et de créer une méthode wrapper :

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
{
    None = 0,
    ...
}

public enum AssocStr
{
    Command = 1,
    ...
}

Un exemple d'implémentation peut être trouvé ci-dessous :

static string AssocQueryString(AssocStr association, string extension)
{
    ...
    return sb.ToString();
}

En appelant cette fonction avec les paramètres appropriés, les développeurs peuvent récupérer le chemin d'accès à l'exécutable associé à l'ouverture d'un type de fichier particulier. Cela permet une intégration transparente avec des applications externes lors du lancement de fichiers dans votre propre logiciel.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn