Icones XP et vb.net

shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013 - 17 juil. 2006 à 11:50
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Derniè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

Merci d'avance

10 réponses

adamo901 Messages postés 139 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 8 décembre 2008
17 juil. 2006 à 14:29
Très bonne question, je suis aussi interessé par le sujet.
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
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 !

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
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)





.....
DestroyIcon (hIcon)

Bon courage ++
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
17 juil. 2006 à 16:52
Rhooo :) encore une API ! :) aller je me lance a la recherche du sans API pour vb.net 2005, histoire de savoir deja si ça existe ou pas ! :)

@bientot

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 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

Merci d'avance
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
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.
0
pymaster Messages postés 74 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 14 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

Merci encore pour le call API
PY
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
17 juil. 2006 à 17:59
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
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.

Bon courage ++
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
17 juil. 2006 à 20:39
Je trouverais sans API ! j'suis patien de toute facon ! :p
Pas mal quand meme le code :)

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
0
Rejoignez-nous