Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EXTRACTION DES ICONES D'UN FICHIER .EXE


Information sur la source



Description

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

  • 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
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

Commentaires et avis

signaler à un administrateur
Commentaire de gillardg le 22/08/2008 19:55:39

j'ai posté une source qui fait +- le même business

http://www.vbfrance.com/codes/EXTRAIRE-TOUS-ICONES-EXECUTABLE-DLL_46960.aspx

la grosse diférence c'est que j'ai posté un projet complet , voir carrément utilisable et non pas juste un snippet
j'attends pour noter que tu nous propose une source + complète
(ce serait cool un petit prog qui extrait tous les icones d'un exe , les mette dans une listview et propose de les sauver soit tous soit individuellement)
a+

signaler à un administrateur
Commentaire de boutemine le 22/08/2008 21:14:43

Désolé, j'ai pas vu ton prog

De meme merci

Pour les sources + completes, je travaille sur csharpfr.com car j'ai vu que le nombre de sources sur le site n'est pas tres grand, donc j'ai pris la décision de travailler sur csharpfr.com

Pour les snippets, je pense que ça aide beaucoup plus pour les débutants qu'une application complete car ça sera plus complexe a comprendre et a analyser.
De meme, merci

signaler à un administrateur
Commentaire de gillardg le 22/08/2008 23:44:56

je ne crois pas car ton code fait appel à des objets qui ne sont pas déclarés
ex :  a.FileName
la moindre des choses c'est quand même de poster un code "utilisable"
donc se serait plus simple si tu ajoutais une application certe simple mais utilisable tel quel:
le débutant alors n'as plus qu'a executer l'appli en mode pas à pas pour comprendre le code ligne par ligne
parce que crois moi
Sub débutant(By Ref Debute As Debutant)
msgbox(Debute & " ne vas pas trouver")
Dim a As new OpenFileDialog
End Sub

signaler à un administrateur
Commentaire de boutemine le 23/08/2008 09:21:36

Bonjour
Bon, pour le code,

Je pense qu'il est parfait et fonctionne correctement,

Je suis pas un imbicile pour poster un code qui ne fonctionne pas ou qui contient des bugs

Pour l'objet a qu'il n'est pas "déclaré", je pense que la 1ere ligne de code illustre le contraire, or si tu parles sur la propriété FileName, chaque objet OpenFileDialog possede cette propriété.

Pour l'application, certe ta raison.
Pour les débutants, il faut éviter les grandes applications qui ne font que les perturber.

Salutations


signaler à un administrateur
Commentaire de gillardg le 23/08/2008 11:30:28

houps j'avais pas vu la première ligne de code :(

une grande app ??? non, juste 50 lignes de code

signaler à un administrateur
Commentaire de gillardg le 23/08/2008 13:01:58

voila pour completer ton prog sans trop compliquer :)
Dim x As Integer = 1
        For Each ico As Image In img.Images
            x = x + 1
           Application.DoEvents()
ico.Save(Application.StartupPath & "\icones de " & a.Filename & x & ".ico", System.Drawing.Imaging.ImageFormat.Icon)
        Next

salutations

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

extraire icone d'un .exe [ par momorice1 ] Bijour !!G le chemin d'acces d'1 de mes fichier.exe, j'aimerais extraire son icone pour ensuite l'afficher !comment faire ?? Extraction d'icone [ par Detonio ] Bonjour à tous, J'ai un problème que je n'arrive pas a résoudre. J'aimerais extraire les icones de fichiers afin de réaliser un explorateur affichant extraire les fichiers d'une application vb [ par amita ] salut mes ami(e)svoila j'ai une application vb càd exe et j'ai perdu toutes la source ( forms et modules) je veu savoir s'il ya un moyen pour récupére Icone exe [ par Le newbie ] Salut,Petite question bete mais comment peut on changer l'icone de l'exe qui est créer par vb.net ?Merci de votre aide à tous. extraire un code a partir d'un fichier .exe ou .cab [ par farouha ] bonjour a tous;je suis en stage et je travaille depuis un mois sur application VB mais le probleme c est ke j 'ai creer mon .exe a ccompagne du .cab e Icone et form [ par lolpop ] Salutjuste un petit soucis, j'ai mis une icone a ma form principal et donc c'est l'icone de mon fichier.mais le probleme j'ai envoyé mon exe a un pot Extraire un auto extractible sous VB [ par norber59480 ] Bjr tous le monde! J'ai réaliser un fichier Zipper (Winzip) en autoextractible, et je voudrais le décompresser dans un programme VB. Pour l'instant j Icone [ par i386 ] Bonsoir, Juste une question... Dans mon petit programme, j'ai juste un module avec sub main () et je voudrais changer l'icone du point exe et je ne s Extraire l'icone d'un fichier en .Net [ par MoiDebutantVB ] Je souhaite définir l'image d'un Label comme étant l'icone du fichier qu'on drag-drop dessus ou alors l'icone d'un fichier d'on on donne l'a .NET extraire grande icone [ par alicvb ] Voilà mon problème : j'aimerai pouvoir extraire l'icone associée à fichier donné. ça je sais faire (avec SHGetFileInfo..


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.