Sauvegarde des iconnes

Signaler
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014
-
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014
-
salut a vous
je cherche une petite fonction extraire icon qui me permet de récupérer une icone d'un exe, est ce qu'on peut faire sa sans les outils comme CommonDialog ???

13 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
Oui.
Etonnante question.
Commondialog ne sert qu'à choisir un fichier et à en extraire le chemin complet et n'a absolument rien à voir avec l'extraction d'une icône !
Si tu connais ce chemin, tu peux brûler cette étape et le donner directement dans ton code !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Re ...
Je viens de relire ta première discussion à ce sujet
Puis j'ai ouvert à nouveau le lien sur lequel tu te bases

Je me suis attardé à la lecture des commentaires généreux du code écrit par le dépositaire du source en cause.
Ces commentaires (je te l'ai déjà dit dans ta ^première discussion à ce sujet) sont le la plus grande clarté. Ils permettent on ne peut plus aisément :
- de cerner la fonction d'extraction
- de voir quels sont les paramètres (eux-mêmes définis par les commentaires) qu'elle reçoit
- de distinguer donc on ne peut plus nettement celui qui correspond au fichier dont on souhaite extraire l'icône

Il n'y manque absolument rien qui ne soit à la portée de tout développeur (y compris super-débutant).

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

merci
tu peux me faire un petit exemple pour Commondialog ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Pourquoi ? Alors que cet exemple, tu l'as directement déjà sur ta machine, dans ton aide VB6 (MSDN) à la rubrique

CommonDialog Control (Open, Save As Dialogs)

précisément assortie de l'exemple que tu réclames
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

si j'ai bien compris le code pour extraire une icone je fait comme sa ?
If ReplaceIcoInExe(txtExe.Text, OpenIconFile(c:\iconne.ico), txtIcoID.Text, txtGroupID.Text,   txtLangID.Text) = True Then
  MsgBox "Changement d'icone effectué avec succès", vbInformation
Else 
Private Sub cmdEXE_Click()
  .Filter = "*.exe;*.dll|*.exe;*.dll|Tous|*.*"
  .FilterIndex = 0
  .ShowOpen
  txtExe.Text = "c:\programme.exe"
End Sub


sa me fait un erreur de syntaxe
vue que je suis débutant que j'ai pas programmer avec vb depuis longtemps j'ai oublier beaucoup des trucks et la je me rappelle de rien
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

nn tu ma pas bien compris je veux pas inserrer le truck de CommonDialog
dans mon application je veux un simple code sans outils
c'est possible ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Le code que tu montres ne correspond ni de près ni de loin à celui de l'exemple de l'aide VB6 !
Il montre de surcroit que tu utilises, sans les comprendre, des bribes de code se trouvant normalement dans un bloc With !
As-tu vraiment ouvert ton aide VB6, à la rubrique que je t'ai indiquée ? Si tu ne l'as pas fait : fais-le vite (sinon, moi, je te laisse là).



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
nn tu ma pas bien compris je veux pas inserrer le truck de CommonDialog
dans mon application je veux un simple code sans outils
c'est possible ?

le truc simple, c'est avec CommonDialog.
Sans ce contrôle, c'est soit des fonctions de l'Api de Windows, soit l'association de trois contrôles (FileListBox, DirLisBox et DriveListBox)
Et j'ai bien l'impression, au vu de ce que tu as déjà montré, que ce sera encore plus complexe pour toi.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

j'utilise une version téléchargé depuis le net sa marche pas le truck d'aide je vais cherche une autre version

mai pour
soit l'association de trois contrôles (FileListBox, DirLisBox et DriveListBox)


ils servent a indiquer le chemin d'accès c'est sa ??
alors on peux les remplacer par le chemin direct comme (c:\dossier*.*) ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
ils servent a indiquer le chemin d'accès c'est sa ??

Non. Mais à parcourir puis sélectionner (comme Commondialog, mais en plus complexe et plus laid)
alors on peux les remplacer par le chemin direct comme (c:\dossier*.*) ?

Non plus
j'utilise une version téléchargé depuis le net sa marche pas le truck d'aide

Je comprends, mais
Lis ma signature.
Bonne chance
___________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

voila j'ai trouver une version 50 minute et sa sera installer a tout
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

pour gagner un peut de temps j'ai trouver cette ressource

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")


j'ai pas bien compris comment elle fonctionne ?
voila le lien :
http://www.codyx.org/snippet_extraire-afficher-icone-fichier-dll-exe_97.aspx
Messages postés
163
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
26 août 2014

sa marche maintenant :)