Obtenir les informations relatives à l'extension d'un fichier

Soyez le premier à donner votre avis sur cette source.

Vue 14 492 fois - Téléchargée 447 fois

Description

En developpant un site de gestion de documents, j’ai eu besoin d’obtenir l’icone associé à un type de fichier.

En soit, cela n’est pas très compliqué : on ouvre la base de registre (merci Microsoft.Win32.RegistryKey), on recupère l’information depuis HKEY_CLASSES_ROOT\{mon_extension}, on prends la valeur de la sous-clef DefaultIcon (avec le plus souvent une redirection : la valeur de la clef {mon_extension} donnant le nom d’une autre sous-clef de HKEY_CLASSES_ROOT à ouvrir). A partir de ces informations, nous pouvons determiner le path vers l’icone. Facile à écrire ! Là où ça ce complique, c’est que la plupart des icones sont contenu dans une DLL ou un EXE. Et que, à moins d’un oubli de ma part, .net ne propose pas de methode pour extraire une resource depuis un module executable.

Quelques instants passés dans mes souvenirs et l’API Windows ExtractIcon m’est apparue dans toute sa splendeur : cette fonction fait exactement ce dont j’avais besoin. Eh bien, qu’à cela ne tienne, avec un peu d’interop, on arrive à tout faire.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Thanatoster
Messages postés
14
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
20 janvier 2006
-
Salut,
Très bonne source mais je pense que ce serait bien de rajouter un truk pour que la fonction FromExtension() renvoie une icône de base en cas d'extension inconnue (on sais jamais)
doter
Messages postés
2
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
21 août 2007
-
Tu as essaye avec ExtractIcon et ca marchait.
Et quand tu remplace ExtractIcon par ExtractIconEx il tu sort ca comme probleme .
C'est ca ?
bubbathemaster
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4 -
Ca me met

"An unhandled exception of type 'System.ArgumentException' occurred in System.Drawing.dll

Additional information: Win32 handle that was passed to Icon is not valid or is the wrong type."

Pour moi ...
doter
Messages postés
2
Date d'inscription
samedi 16 juillet 2005
Statut
Membre
Dernière intervention
21 août 2007
-
Salut tous le monde !
Pour recuperer les icones en 16*16 ,il faut utiliser " ExtractIconEx " qui permet de retourne les "large" et "small" icone .
BasicInstinct
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
10 -
y'a-t-il moyen de recuperer l'icone en 16*16 ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.