La code utilise l'api windows pour extraire les icones d'une executable (metadata).
On doit ajouter les composants suivants sur le formulaire
- un bouton pour effectuer l'operation nommee openbtn.
- un label pour afficher le nom de l'exe (nommee namelbl).
- un label pour afficher le nombre d'icones (nommee total).
- un composant ImageList pour sauvgarder les icones nommee img.
Source / Exemple :
Dim a As New OpenFileDialog
Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As IntPtr, ByVal lpszExeFileName As String, ByVal nIconIndex As Integer) As IntPtr
Private Sub opebtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles opebtn.Click
namelbl.Text = "File name : " & a.FileName
a.Filter = "Win32 PE Files (*.Exe,*.Dll,*.Scr,*.cpl)|*.exe;*.dll;*.scr;*.cpl"
If a.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim Handler As IntPtr
'On passe -1 pour lire le nombre d'icones
Handler = ExtractIcon(Me.Handle, a.FileName, -1)
If Handler.ToInt32 = 0 Then
MsgBox("Pas d'icones dans le fichier selectionne.....", MsgBoxStyle.Exclamation, "Error")
Exit Sub
End If
total.Text = "Total icons : " & Handler.ToInt32
img.Images.Clear()
Dim i As Integer
'On prend le nombre d'icones.
i = Handler.ToInt32
For i = 1 To i
'La fonction retourne un handle pour l'icone.
'On lui passe: le handle de la fenetre, le nom de fichier et l'index de l'icone.
Handler = ExtractIcon(Me.Handle, a.FileName, i - 1)
img.Images.Add(i, System.Drawing.Icon.FromHandle(Handler))
Next
End If
End sub
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.