shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013
-
17 juil. 2006 à 11:50
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 2016
-
17 juil. 2006 à 20:39
Bonjour,
je suis en train de réaliser une application windows en vb 2005 et je souhaite l'enrichir graphiquement en lui appliquant des icones de windows dans ses menus et ses contextmenu, directement en prenant les ressources des dll de windows,
j'aimerai savoir déja dans quelles dll se situent toutes les icones, et comment les visualiser pour les choisir, et ensuite comment dire d'aller chercher pour chaque chose la ressource correspondante a l'image de telle dll
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 17 juil. 2006 à 14:58
Salut a tous
Les icones ce trouve dans
%SystemRoot%\system32\SHELL32.dll
Il en existe plein d'autre mais les principales est dedans
Pour faire appel au icone depuis Vb 2005 a partir cette DLL je sais pas trop mais je sais une chose c'est qu'il faut ce servir des index
Exemple pour avoir l'icone qui ressemble au bouton Off, il faudra faire alors
%SystemRoot%\system32\SHELL32.dll, 8
J'espere au moins que ça pourra servir ou mettre sur la piste !
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 17 juil. 2006 à 16:43
Salut tout le monde :)
Il te faut utiliser la méthode ExtractIcon qui va te retourner le handle de l'icone demandé.
Et une fois récupérer détruire la ressource avec la méthode DestroyIcon.
Reprenon l'exemple de Troxa avec shell32.dll
'Déclaration
private declare auto function ExtractIcon lib "shell32.dll" (hinst as intptr,lpszExeFileName as string, nIconIndex as uinteger) as intptr
private declare auto function DestroyIcon lib "user32.dll" (hicon as intptr) as boolean
Application
dim hIcon as intptr = ExtracIcon(me.handle,"c:\windows\system32\shell32.dll",8)
dim myIcon as icon = icon.f
romhandle(hIcon)
shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013 17 juil. 2006 à 16:52
ya un soft ou je peux voir toutes les icones de la dll, genre ResHacker ou un truc du genre ? , parce que tester chiffre par chiffre avant de voir ce qui m'intérèsse c'est long mdr :D
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 17 juil. 2006 à 17:05
Shadow1779 -> Il y a IconWorkShop 6 d'Axlialis (Shareware par contre)
Troxsa -> Je crois que tu ne vas pas y échapper cette fois ci à l'api à moins que tu trouves une méthode cachée au fin fond d'une classe du framework . Bonne reherche.
pymaster
Messages postés74Date d'inscriptionvendredi 14 juillet 2006StatutMembreDernière intervention14 août 2006 17 juil. 2006 à 17:39
wow !
J'ai chercher pour ce code longtemps avant de le trouver, merci pour se post.
Pour allez chercher les icones sans faire du "Essais-Erreur" j'ai patenté un petit code qui comprend un formulaire, un Treeview et une image list
On Error Resume Next
Dim hIcon As IntPtr
Dim myIcon As Icon
Dim i As Single = 0
Dim nd As TreeNode
For i = 0 To 237
hIcon = ExtractIcon(Me.Handle, "c:\windows\system32\shell32.dll", i)
myIcon = Drawing.Icon.FromHandle(hIcon)
imgList.Images.Add(i.ToString, myIcon)
nd = Me.trTest.Nodes.Add(i.ToString)
nd.ImageIndex = i
Next
ça affiche dans le treeView toutes images icones avec leurs index. C'est simple mais pratique
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 17 juil. 2006 à 18:11
Arf je suis dégouté j'avais posté une belle note complémentaire
Pour information
Pymaster fait une itération qui lit une à une les icones de shell32.dll. Je qui oblige de savoir le nombre d'icones à l'avance. Donc pour information la méthode ExtractIcon permet de récupérer le nombre total de ressources icones présentent dans un fichier. Juste la signature change.
Déclaration
private declare auto function ExtractIconN lib "shell32.dll" alias "ExtractIcon" (hinst as intptr,lpszExeFileName as string, nIconIndex as integer) as int
Application
dim c as integer=ExtractIconN(me.handle,"c:\windows\system32\shell32.dll", -1)
'c = nombre d'icones total.