begin process at 2010 02 10 08:06:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > OBTENIR LES INFORMATIONS RELATIVES À L'EXTENSION D'UN FICHIER

OBTENIR LES INFORMATIONS RELATIVES À L'EXTENSION D'UN FICHIER


 Information sur la source

Note :
Aucune note
Catégorie :Fichiers / Disque Source .NET ( DotNet ) Classé sous :extension, information, fichier Niveau :Initié Date de création :06/05/2005 Vu / téléchargé :10 766 / 366

Auteur : mcarbenay

Ecrire un message privé
Site perso
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 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.




 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip PILOTER WORD VIA MICROSOFT.OFFICE.INTEROP.WORD par whismeril
Source avec Zip PILOTER EXCEL VIA MICROSOFT.OFFICE.INTEROP.EXCEL par whismeril
Source avec Zip Source .NET (Dotnet) CHECK IDENTICAL FILES par eldim
Source avec Zip Source avec une capture Source .NET (Dotnet) RICHTEXTBOX NUMÉROTÉ (NUMÉROS DE LIGNES) par jray
Source avec Zip Source avec une capture SURVEILLER FICHIERS CRÉÉS AVEC FILESYSTEMWATCHER AMÉLIORÉ par TheOnlyMaX

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) RECHERCHE ET GESTION DE FICHIERS PERSONNALISÉES par JeremyLecouvert
Source .NET (Dotnet) GREP POUR WINDOWS par Warny
Source avec Zip Source .NET (Dotnet) CHECK IDENTICAL FILES par eldim
Source avec Zip Source avec une capture Source .NET (Dotnet) [.NET3.5] EXTENSION METHODS: PROGRESSBAR ET VISTA par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) SUPPRIMER LES TAG BOM DANS FICHIER UTF-8 par gluk

Commentaires et avis

Commentaire de Bidou le 07/05/2005 00:45:32 administrateur CS

J'ai testé ta class. L'icône que j'en ai resorti avait perdu beaucoup de ses couleurs.....

Voici mon code avec lequel j'ai testé ta class :

FileTypeInfo fti = FileTypeInfo.FromExtension(".avi");
Icon i = fti.DefaultIcon;
FileStream fs = new FileStream(@"C:\test.ico", FileMode.Create);
i.Save(fs);

Commentaire de mcarbenay le 09/05/2005 12:19:54

tiens, c'est marrant, moi je fais un
fti.DefaultIcon.ToBitmap() et apres je sauvegarde le bitmap, j'avais jamais essayé de sauvegarder l'icone...

quand on sauvegarde le BMP on a bien toutes les couleurs qui vont bien... (bon evidement on a un fond blanc, mais pour moi ce n'etait pas génant)

Je regarderais si je trouve comment on empeche Icon.Save de faire des conneries

Commentaire de Bidou le 10/05/2005 08:16:43 administrateur CS

Au cas où tu trouverais, met ta source à jour, ça en intéressera plus d'un :-)

Commentaire de aogie le 10/05/2005 11:21:51

Windows stocke ses icônes en 16 couleurs pour 16x16, 16 couleurs 32x32 et 256 couleurs 48x48.
Cf : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_icons.asp

L'API Win32 n'est pas très récente et effectivement ExtractIcon renvoie régulièrement un handle sur une icône 32x32 à 16 couleurs.
Essayer éventuellement ExtractIconEx pour essayer de récupérer les icônes 48x48 et obtenir ainsi 256 couleurs...

Concernant FileTypeInfo.cs :
- il manque "using System.IO;" pour l'emploi de l'objet "Path".
- la variable "ext" n'est pas mise à jour par l'emploi de l'objet "Path".
- il faut normalement employer l'API "DestroyIcon" pour supprimer l'handle extrait. Or le chargement effectué par l'appel à la fonction statique "Icon.FromHandle()" crée un lien persistant. On ne peut donc pas détruire l'handle.
Il faut donc créer une variable membre pour stocker le dernier handle extrait pour le supprimer à la destruction de l'objet "FileTypeInfo".

[DllImport("user32.dll")]
private extern static bool DestroyIcon(IntPtr hIcon);

private IntPtr                _hIcon = IntPtr.Zero;

~FileTypeInfo()
{
     if (_icon != null)
    {
        _icon.Dispose();
        _icon = null;
    }
    if (_hIcon != IntPtr.Zero) DestroyIcon(_hIcon);
}

...

avec _hIcon = ExtractIcon(hInst, file, icoNbr);

Dans cet exemple, le code est directement placé dans le destructeur.
Sinon, implémenter l'interface IDisposable. Placer le code dans la méthode Dispose() et appeler Dispose() dans le destructeur.

Commentaire de aogie le 10/05/2005 14:36:17

2ème possibilité.
Utiliser l'API SHGetFileInfo :
http://support.microsoft.com/?kbid=319350

Commentaire de BasicInstinct le 26/03/2007 12:19:50

y'a-t-il moyen de recuperer l'icone en 16*16 ?

Commentaire de doter le 12/08/2007 18:20:08

Salut tous le monde !
Pour recuperer les icones en 16*16 ,il faut utiliser " ExtractIconEx " qui permet de retourne les "large" et "small" icone .

Commentaire de bubbathemaster le 18/08/2007 00:57:38

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 ...

Commentaire de doter le 21/08/2007 21:31:04

Tu as essaye avec ExtractIcon et ca marchait.
Et quand tu remplace ExtractIcon par ExtractIconEx il tu sort ca comme probleme .
C'est ca ?

Commentaire de Thanatoster le 02/01/2008 23:21:53

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)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Recuperer le nom d un fichier sans son extension dans un textbox [ par amirirn1 ] Bonjour,j aimerai recuperer le nom d un fichier que j ai ouvert dans un textbox sans l extension du fichier.aaa.txt je veux textbox.Text&nbsp; = aaa association extension de fichier / application [ par Blacknight91 ] Bl@cknightBonjour,J'aimerais savoir comment associé une extension de fichier avec une application ? Et ainsi que l'extension soit reconnu de windows p Affecter une extension de fichier a un programme [ par shadow1779 ] Bonjour,j'ai développer deux petites applications simples avec Linq, une générant un xml avec la liste des processus, l'autre capable de lire les fich Fichier, changement du nom du fichier [ par vagg ] Bonjour,Dans mon programme, l'utilisateur peut aller chercher un fichier texte grâce à un OpenFileDialog qui ensuite se charge en objet.J'aimerais que changer l'extension d'un fichier dans vista [ par volcom20 ] Bonjour, j'aimerais voir les extension de mais fichiers sous windows vista car je veux renommer un fichier .txt pour un .zif ou .css ou .html merci! [C#] Vérification de certificat de fichier [ par scoubidou944 ] glop glop TLM, On trouve tout un tas d'information pour récupérer la version d'un fichier, l'auteur &amp; Cie mais je n'arrive pas à trouver d'inform Ouvrir un fichier avec nimporte quelle extension en c# [ par BoOdy33 ] Bonjour, j essai depuis plusieurs jours d ouvrir un fichier en appuyant simplement sur un bouton sur une application c# que je fais. Le probleme c est Lire fichier Setting [ par Souliabdo ] Bonjour, <p class="MsoNorma Convertir un caractère spécial en string pour l'insérer dans un fichier [ par tinwul ] Bonjour à tous,Je cherche sans trouver une solution à mon problème. Je débute en CSharp et j'ai un petit souci :J'ouvre un fichier xml pour le modifie Renommer un fichier [ par bestoflam ] j pense que c facile pour vous...mais svp aidez moi ...comment j fait pour renommer un fichier..on suppose que le fichier se trouve dans le meme reprr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales