Numéro d'article: 185883 - Dernière mise à jour: jeudi 1 juillet 2004 - Version: 3.2

Comment faire pour extraire une icône d'un programme Windows

Sommaire

Agrandir tout | Réduire tout

Résumé

L'exemple de code fourni ci-dessous montre comment extraire une icône à partir d'un programme de Microsoft Windows 32 bits ou un fichier DLL.

Plus d'informations

L'exemple de programme affiche l'icône d'une application dans une zone d'image. Elle indique également comment déclencher l'image pour rester en utilisant la propriété AutoRedraw de la zone Image.

Exemple pas à pas

  1. Démarrez Visual Basic ou dans le menu Fichier, cliquez sur Nouveau projet (ALT + F, N) si Visual Basic est déjà en cours d'exécution. Form1 est créé par défaut.
  2. Ajoutez un bouton de commande et un contrôle de zone de l'image à Form1. Ajuster la taille de Picture1 afin qu'une icône 32*32 tienne dans la zone Image.
  3. Ajoutez le code suivant à la section Déclarations générales de Form1 :
          Option Explicit
          Private Const MAX_PATH = 260
    
          Private Declare Function GetSystemDirectory Lib "kernel32" Alias _
          "GetSystemDirectoryA" (ByVal lpBuffer As String, _
                                 ByVal nSize As Long) As Long
    
          Private Declare Function ExtractIcon Lib "shell32.dll" Alias _
          "ExtractIconA" (ByVal hInst As Long, _
                          ByVal lpszExeFileName As String, _
                          ByVal nIconIndex As Long) As Long
    
          Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, _
          ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
    
          Dim path$, nIcon As Long
    
          Private Sub Command1_Click()
              Dim hIcon As Long
    
              hIcon = ExtractIcon(App.hInstance, path$, nIcon)
              Set Picture1.Picture = LoadPicture("") ' Clear the picture box
              Picture1.AutoRedraw = True
              Call DrawIcon(Picture1.hdc, 0, 0, hIcon)
              Picture1.AutoRedraw = False
              Picture1.Refresh
              nIcon = nIcon + 1
          End Sub
    
          Private Sub Form_Load()
          ' Store the full path to the file containing the icon(s).
              path$ = Space$(MAX_PATH)
              Call GetSystemDirectory(path$, MAX_PATH)
              path$ = Trim$(path$) ' Trim trailing blanks & Null terminator
              path$ = Left$(path$, Len(path$) - 1) & "\Shell32.dll"
              nIcon = 0
          End Sub
    
    					
  4. Appuyez sur F5 pour exécuter le programme. Cliquez sur Command1 pour copier la première icône stockée dans Shell32.dll à Picture1. Chaque clic suivante de Command1 affiche une icône différente.

Références

Pour plus d'informations, reportez-vous à la page Web suivante sur MSDN (Microsoft Developer Network) :
http://msdn.microsoft.com/en-us/library/aa453700.aspx (http://msdn.microsoft.com/en-us/library/aa453700.aspx)

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 5.0 Édition initiation
  • Microsoft Visual Basic 6.0 Édition initiation
  • Microsoft Visual Basic 5.0 Édition professionnelle
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic 5.0 Édition Entreprise
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 4.0 Édition Standard
  • Microsoft Visual Basic 4.0 Édition professionnelle
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
Mots-clés : 
kbmt kbapi kbhowto KB185883 KbMtfr
Traduction automatiqueTraduction automatique
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: 185883  (http://support.microsoft.com/kb/185883/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
 

Traductions disponibles