IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[c#] SHELL récupération des icones


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Points : 149
    Points
    149
    Par défaut [c#] SHELL récupération des icones
    je désire récupérer les icones du shell afin de les afficher dans un listview
    Comment faire ?
    par avance merci

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2004
    Messages : 6
    Points : 7
    Points
    7
    Par défaut [c#][DllImport] Icone du shell
    Bonjour,

    Voici une petite classe qui te permet de récupérer l'icone associé à un fichier dans le Shell. Elle te permet de récupérer la petite ou la grande icone.
    Cette classe fait directement appel à la DLL Shell32.dll du système.

    En espérant que ça t'aidera.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
      public class Shell
        {
            #region Internal Constantes
     
            internal const uint SHGFI_ICON = 0x100;
     
            internal const uint SHGFI_LARGEICON = 0x0; // 'Large icon
     
            internal const uint SHGFI_SMALLICON = 0x1; // 'Small icon
     
            internal const int SHGFI_USEFILEATTRIBUTES = 0x10;
     
            #endregion
     
            #region DLL Import
     
            [DllImport("shell32.dll", CharSet = CharSet.Auto)]
            internal static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbFileInfo, uint uFlags);
     
            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
            internal struct SHFILEINFO
            {
     
                public IntPtr hIcon;
     
                public int iIcon;
     
                public uint dwAttributes;
     
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
                public string szDisplayName;
     
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
                public string szTypeName;
     
            } ;
     
            [DllImport("user32.dll", SetLastError = true)]
            internal static extern int DestroyIcon(IntPtr hIcon);
            #endregion
     
            #region Public méthodes
     
            public static Icon GetSmallIcon(string fileName)
            {            
                IntPtr hImgSmall; //the handle to the system image list
     
                SHFILEINFO shinfo = new SHFILEINFO();
     
                //Use this to get the small Icon
                hImgSmall = SHGetFileInfo(fileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
     
                //The icon is returned in the hIcon member of the shinfo struct
     
                Icon icon = (Icon)Icon.FromHandle(shinfo.hIcon).Clone();
     
                DestroyIcon(shinfo.hIcon);
     
                return icon;
     
            }
     
     
            public static Icon GetLargeIcon(string fileName)
            {
     
                IntPtr hImgLarge; //the handle to the system image list
     
                SHFILEINFO shinfo = new SHFILEINFO();
     
                //Use this to get the large Icon
     
                hImgLarge = SHGetFileInfo(fileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_LARGEICON | SHGFI_USEFILEATTRIBUTES);
     
                //The icon is returned in the hIcon member of the shinfo struct
     
                Icon icon = (Icon)Icon.FromHandle(shinfo.hIcon).Clone();
     
                DestroyIcon(shinfo.hIcon);
     
                return icon;
     
            }        
            #endregion
     
        }

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Points : 149
    Points
    149
    Par défaut
    MERCI
    Autre question comment les afficher dans une liestview car il semblerait que la terminaison .ico ne soit pas valide pour une image

Discussions similaires

  1. Récupération des icones par défaut
    Par xixi31 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 14/02/2008, 15h15
  2. Réponses: 2
    Dernier message: 30/03/2007, 14h42
  3. Récupération des noms de champs d'une table
    Par Battomura dans le forum SQL
    Réponses: 2
    Dernier message: 24/03/2003, 10h00
  4. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  5. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 08h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo