Extraire et Afficher une Icone d'un fichier dll, exe

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 959 fois - Téléchargée 7 fois

Contenu du snippet

Const MAX_PATH = 260
 Const DI_MASK = &H1
 Const DI_IMAGE = &H2
 Const DI_NORMAL = &H3
 Const DI_COMPAT = &H4
 Const DI_DEFAULTSIZE = &H8
 
 
 Private Declare Function SHChangeIconDialog Lib "shell32" Alias "#62" (ByVal owner As Long, ByVal pszFileName As String, pdwBufferSize As Long, pdwIndex As Long) As Boolean
 Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long
 Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
 Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long
 
 
 Private Sub ExtractIcone(Lechemin As String)
    Dim sFileName  As String
    Dim sUnicode   As String
    Dim nIconIdx   As Long
    Dim hSmallIcon As Long
    Dim hLargeIcon As Long
    Dim Pos        As Long
    
    sFileName = Lechemin & String$(MAX_PATH - Len(sFileName), 0)
    
    sUnicode = StrConv(sFileName, vbUnicode)
   
    If SHChangeIconDialog(Me.hWnd, sUnicode, 0, nIconIdx) Then
    
       sFileName = StrConv(sUnicode, vbFromUnicode)
       Pos = InStr(sFileName, vbNullChar)
       If Pos Then sFileName = Left$(sFileName, Pos - 1)
    
       If ExtractIconEx(sFileName, nIconIdx, hLargeIcon, hSmallIcon, 1) > 0 Then
          DrawIconEx Me.hdc, 0, 8, hSmallIcon, 0, 0, 0, 0, DI_NORMAL
          DrawIconEx Me.hdc, 32, 8, hLargeIcon, 0, 0, 0, 0, DI_NORMAL
          DestroyIcon hSmallIcon
          DestroyIcon hLargeIcon
          End If
       End If
 
 End Sub
 
 
 Rem utilisation
    ExtractIcone ("shell32.dll")
 
 
 

Compatibilité : VB6

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.