??? ICONE DU POSTE DE TRAVAIL ??? [IMPORTANT]

Signaler
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
-
ScSami
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
-
Comment obtenir l'icone du poste de travail ???

Bien entendu, je veux celui utilisé (pas celui par défaut) !

Et aussi, dans la foullé, celui de la corbeille, ceux du réseau ainsi que celui du panneau de config.

J'arrive à obtenir, via une chaine vide, celui du bureau, mais pas les autres...

J'ai vraiment besoin d'aide là parce que je m'en sort pas avec l'image-list systéme...

2 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
fait une recherche dans la base de registre. Normalement c'est la clé suivante :
HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon

Sébastien FERRAND
Blog :
http://blogs.developpeur.org/sebmafate
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
20
Alors la question est : comment utiliser, via les API, cette clé pour en extraire l'icone associée ???

Et dans ce cas, une question persiste : A quoi sert l' ImageList du système !!!

Bon, voici ma source :
Private Declare ...
- SHGetSpecialFolderLocation ...
- SHGetPathFromIDList
- SHGetFileInfo
- ImageList_Draw
- ImageList_DrawEx

Private Const NOERROR As Long = 0
Private Const CSIDL_DESKTOP = &H0
Private Const CSIDL_BITBUCKET = &HA
Private Const CSIDL_DESKTOPDIRECTORY = &H10
Private Const CSIDL_DRIVES = &H11

Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type

Private Type SHFILEINFO
hIcon As Long ' : icon
iIcon As Long ' : icondex
dwAttributes As Long ' : SFGAO_ flags
szDisplayName As String * MAX_PATH ' : display name (or path)
szTypeName As String * 80 ' : type name
End Type

Private Sub Form_Load()
Me.AutoRedraw = True

Dim erreur As Long
Dim tst As Boolean
Dim IDL As ITEMIDLIST '????????????????
'Dim IDL As Long ?????????????

'Get the special folder
erreur = SHGetSpecialFolderLocation(100, CSIDL_BITBUCKET, IDL)
If erreur = NOERROR Then
Path$ = Space$(512) 'Create a buffer
tst = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal Path$) 'Get the path from the IDList
'tst =TRUE/FALSE
thePath = Left$(Path, InStr(Path, Chr$(0)) - 1) 'Remove the unnecessary chr$(0)'s
Me.Caption = thePath
End If

Dim hImage As Long, udtFI As SHFILEINFO
'get the handle of the system image list that contains the large icon images
'hImage = SHGetFileInfo("0", ByVal 0&, udtFI, Len(udtFI), SHGFI_SYSICONINDEX Or SHGFI_LARGEICON)

hImage = SHGetFileInfo("", ByVal 0&, udtFI, Len(udtFI), SHGFI_PIDL Or SHGFI_SYSICONINDEX Or SHGFI_LARGEICON)

'draw the icon (normal)
ImageList_Draw hImage, udtFI.iIcon, Me.hDC, 0, 0, ILD_TRANSPARENT
'draw the icon (blended)
ImageList_DrawEx hImage, udtFI.iIcon, Me.hDC, 32, 0, 32, 32, CLR_NONE, CLR_DEFAULT, ILD_BLEND50

Tiré de l'API-Guid en gros...

Ce qui me pose pas mal de problèmes... Le "" me donne bien l'icone du bureau et une "C:" me donne bien celui du lecteur. Mais je n'arrive pas à obtenir celui du poste de travail ni celui de la corbeille ou du réseau ainsi que celui du panneau de config.

Je dois bien admètre que je nage un peu dans le concept (et le format) d'IDlist et encore plus dans celui de l'imagelist system...

Voilà pour recentrer mon problème...