Comment utiliser la fonction SHGetFileInfo pour obtenir les icônes qui sont associés aux fichiers dans Visual C# .NET

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 319350
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Résumé
Cet article étape par étape explique comment utiliser la fonction SHGetFileInfo pour récupérer les icônes qui sont associés aux fichiers.

back to the top

Créer une application Windows Forms

  1. Démarrez Microsoft Visual Studio .NET.
  2. Dans le menu Fichier , pointez sur Nouveau , puis cliquez sur projet .
  3. Dans la boîte de dialogue Nouveau projet , cliquez sur projets Visual C# sous types de projet , puis cliquez sur application Windows sous modèles .
  4. Dans la zone Nom , tapez GetIconSample .
back to the top

Utilisez la fonction SHGetFileInfo

  1. Ajoutez le code suivant dans le fichier Form1.cs à la fin des instructions USING .
    using System.Runtime.InteropServices;					
  2. Ajoutez le code suivant après la classe Form1 de l'espace de noms GetIconSample .
    [StructLayout(LayoutKind.Sequential)]public struct SHFILEINFO {	public IntPtr hIcon;	public IntPtr iIcon;	public uint dwAttributes;	[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]	public string szDisplayName;	[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]	public string szTypeName;};class Win32{	public const uint SHGFI_ICON = 0x100;	public const uint SHGFI_LARGEICON = 0x0; // 'Large icon	public const uint SHGFI_SMALLICON = 0x1; // 'Small icon			[DllImport("shell32.dll")]	public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);}					
  3. Ajoutez le code suivant dans la classe Form1 après les instructions PRIVATE :
    private int nIndex = 0;					
  4. Ajouter un contrôle listView , un contrôle de bouton et un contrôle imageList au formulaire. Les noms par défaut sont respectivement listView1, button1 et imageList1.
  5. Dans la fenêtre Propriétés de button1 , définir le texte de bouton pour sélectionner un fichier et puis ajoutez le code suivant dans l'événement button1_click :
    IntPtr hImgSmall; //the handle to the system image listIntPtr hImgLarge; //the handle to the system image liststring fName; //  'the file name to get icon fromSHFILEINFO shinfo = new SHFILEINFO();   OpenFileDialog openFileDialog1 = new OpenFileDialog();openFileDialog1.InitialDirectory = "c:\\temp\\";openFileDialog1.Filter = "All files (*.*)|*.*";openFileDialog1.FilterIndex = 2;openFileDialog1.RestoreDirectory = true ;listView1.SmallImageList = imageList1;listView1.LargeImageList = imageList1;			if(openFileDialog1.ShowDialog() == DialogResult.OK) {     fName = openFileDialog1.FileName;     //Use this to get the small Icon     hImgSmall = Win32.SHGetFileInfo(fName, 0, ref shinfo,(uint)Marshal.SizeOf(shinfo),Win32.SHGFI_ICON |Win32.SHGFI_SMALLICON);    //Use this to get the large Icon    //hImgLarge = SHGetFileInfo(fName, 0,     //	ref shinfo, (uint)Marshal.SizeOf(shinfo),     //	Win32.SHGFI_ICON | Win32.SHGFI_LARGEICON);    //The icon is returned in the hIcon member of the shinfo struct    System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon);				    imageList1.Images.Add(myIcon);				    //Add file name and icon to listview    listView1.Items.Add(fName, nIndex++); }					
back to the top

Exécutez le projet

  1. Compilez le projet : dans le menu Générer , cliquez sur Générer la solution .
  2. Appuyez sur F5 pour exécuter le projet.
  3. Cliquez sur Sélectionner un fichier , puis sélectionnez un fichier dans la boîte de dialogue Ouvrir . Le nom du fichier et l'icône qui est associé le fichier apparaît dans le contrôle de liste .
back to the top
Références
Pour plus d'informations dans une version de Microsoft Visual Basic .NET de cet article, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
319340 Comment utiliser la fonction SHGetFileInfo pour obtenir les icônes qui sont associés aux fichiers dans Visual Basic .NET
back to the top

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 319350 - Dernière mise à jour : 12/07/2015 09:15:50 - Révision : 2.3

Microsoft Visual Studio .NET 2003 Professional, Microsoft Visual Studio .NET 2003 Enterprise Architect, Microsoft Visual Studio .NET 2003 Enterprise Developer, Microsoft Visual Studio .NET 2003 Éducation, Microsoft Visual Studio .NET 2002 Professional Edition, Microsoft Visual Studio .NET 2002 Enterprise Architect, Microsoft Visual Studio .NET 2002 Enterprise Developer, Microsoft Visual Studio .NET 2002 Éducation

  • kbnosurvey kbarchive kbmt kbhowtomaster KB319350 KbMtfr
Commentaires