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

ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 12 mars 2005 à 08:56
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 13 mars 2005 à 14:07
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
12 mars 2005 à 09:04
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
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
13 mars 2005 à 14:07
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...
0
Rejoignez-nous