2010-11-11 3 views
0

Je suis en train de faire l'icône du fichier .exe en utilisant les API suivantes:
SHGetFileInfoW() SHGetImageList() et de la ImageList ainsi obtenu, je lis l'icône en appelant GetIcon ().Obtenir des informations sur l'icône à partir du fichier exécutable?

Lorsque la profondeur de couleur de la machine est réglée sur 32 bits, j'obtiens l'icône de couleur 32 bits. Le problème est quand je change la profondeur de couleur de la machine à 24 ou 16 bits alors j'obtiens une icône de couleur de 16 bits et cette image semble être corrompue.

J'ai également vérifié la liste des icônes disponibles dans certaines des applications Windows communes (bloc-notes, peinture, etc) et certaines des applications de bureau, aucune des icônes de couleur 16 bits ou 24 bits.

Quel serait le meilleur moyen d'obtenir les icônes appropriées à partir du fichier exécutable?

Merci!

Répondre

0

Vous pouvez charger les fichiers en utilisant LoadLibraryEx, puis extraire les icônes en utilisant LoadImage - ou - si vous voulez un accès direct aux données des icônes: FindResource, LoadResource, LockResource vous donnera un pointeur sur les bits ressources de l'icône.

+0

L'exe peut avoir un tas d'images ICON et comment choisir une icône, par exemple celle avec la profondeur de couleur 32? – atVelu

+0

Si vous utilisez LoadImage, il choisira celui qui correspond à vos paramètres sur LoadImage. Si vous utilisez LoadResource, vous devez savoir que chaque fichier Icon correspond à une ressource RT_ICON_GROUP, qui pointe vers des ressources RT_ICON individuelles, une pour chaque profondeur de conception prise en charge dans le fichier ico. Quelque chose comme ca. –

Questions connexes