Comment Windows associe-t-il les icons aux fichiers dans l’explorateur?

InDesign CS2 et CS3 sont tous deux installés. Les deux utilisent des fichiers avec l’extension .indd. Comment Windows sait-il quelle icône utiliser? Il utilise des icons correctes, c.-à-d. Que les fichiers CS2 ont une icône cs2 et que les fichiers CS3 ont une icône CS3.

Comment Windows sait-il faire cela?

Et comment puis-je extraire ou utiliser ce système de détection de version dans mes programmes?

Modifier:

Merci pour vos réponses shell-extension-icon-handler. Quelque chose de nouveau pour moi. Mais y a-t-il un moyen de me connecter à IconHandler fourni par InDesign et de l’utiliser pour détecter la version du fichier InDesign?

Vous devez écrire une extension de shell Icon Handler. Voir la documentation MSDN pour IExtractIcon . Le mécanisme de base consiste à créer une extension de shell et à enregistrer le gestionnaire d’icons correspondant au type de fichier souhaité (consultez HKEY_CLASSES_ROOT / .indd), puis le shell charge votre gestionnaire, transmet les informations du fichier et demande une icône en retour. Il existe également la méthode IExtractImage si vous souhaitez fournir une image bitmap plutôt qu’une simple icône.

Notez que vous devez être particulièrement attentif à l’écriture des gestionnaires d’extensions de shell car toute fuite ou tout blocage de mémoire peut endommager l’explorateur et toute autre application affichant une boîte de dialog d’ouverture / sauvegarde de fichier.

Pour certains fichiers, il s’agit de l’entrée de registre HKEY_CLASSES_ROOT\\DefaultIcon , mais la plupart des fichiers correspondent à un nom plus convivial, par exemple .pdf\(Default) -> AcroExch.Document (si Adobe Reader est installé).

Dans ce cas, vous devez aller dans le registre à AcroExch.Document et voir soit

  • DefaultIcon est juste là ou
  • AcroExch.Document\CLSID\(Default) est un GUID. Suivez ensuite HKEY_CLASSES_ROOT\CLSID\ et vous remarquerez que cette clé contient DefaultIcon

… et DefaultIcon est l’endroit où l’icône est chargée.

J’espère que c’était assez clair;). Je ne connais pas votre cas particulier, mais il devrait y avoir une distinction dans le registre.

Il installe presque certainement un gestionnaire d’extension d’icône shell . Ecrire votre propre et savoir comment détecter la version dans un format de fichier qui n’est pas bien documenté ou pas du tout est assez délicat.