begin process at 2012 02 09 00:06:38
  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é :12 743 / 393

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 Source avec une capture Source .NET (Dotnet) EXPLORATEUR DE DOSSIERS ET FICHIERS par Yanith
Source avec Zip Source avec une capture Source .NET (Dotnet) ZIP-UNZIP AVEC SHARPZIPLIB par buno
Source avec Zip Source .NET (Dotnet) SUPER COPIER par casseur
Source .NET (Dotnet) SERIALIZATION/DESERIALIZATION COMPLÈTE DE CLASSES par DedeSurf
Source avec Zip CONVERSION DE FICHIERS FORTRAN 77 EN FORTRAN 95 par deadhand

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) DÉFRAGMENTER UN FICHIER par ShareVB
Source avec Zip Source .NET (Dotnet) SAVOIR QUEL FICHIER EST UTILISÉ PAR TELLE APPLICATION : LA L... par ShareVB
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTIONNAIRE DES TODO DISSEMINES UN PEU PARTOUT DANS VOS COD... par dodo7263
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

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  = 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 & 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 changer la coloration syntaxique grace a l'extension de fichier [ par milinakos ] Bonjour à tous je viens aujourd'hui vous poser une question très importante! je suis débutant en c# et je suis en plein dans un projet (ouverture d'un C#, comment lire le contenu d'un fichier PDF [ par olandcie ] Bonjour, Etudiant de première année, je désire lire un fichier PDF Serait-ce possible d'obtenir le bout de code lisant une ligne ? D'avance merci ArgumentException lors d'une save de XML [ par vitelize ] Hello, j'ai un problème que je n'arrive pas a résoudre et pour laquelle j'aurais besoin d'aide. [code=cs]public bool EcrireConfig(string Element, s


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,200 sec (3)

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