begin process at 2012 02 16 14:21:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > RÉCUPÉRER UN ICONE DEPUIS SON HANDLE

RÉCUPÉRER UN ICONE DEPUIS SON HANDLE


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :icon, icone, handle, ipicturedisp, hicon Niveau :Débutant Date de création :01/01/2007 Vu :6 295

Auteur : MadM@tt

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


 Description

Comment récupérer une variable de type Icon utilisable dans VB6 depuis un handle fournit par une API ?

Voilà ce que fait cette source.

Source

  • ' Structure d'un GUID
  • Public Type GUID
  • Data1 As Long
  • Data2 As Integer
  • Data3 As Integer
  • Data4(0 To 7) As Byte
  • End Type
  • ' Structure contenant des infos sur une image
  • Public Type PICTDESC
  • ' Normalement cette structure contient une union mais VB ne les gère pas
  • cbSizeofStruct As Long ' Taille de cette structure
  • picType As Long ' Type d'image : ICON, BITMAP, METAFILE, ENHMETAFILE
  • ' Début union
  • hImage As Long ' Handle de l'image
  • xExt As Long ' Taille x de l'image pour une METAFILE
  • yExt As Long ' Taille y de l'image pour une METAFILE
  • End Type
  • ' picType de PICTDESC pour une ICON
  • Public Const PICTYPE_ICON = 3
  • 'permet de convertir une structure PICTDESC (et donc un handle d'image) en un IPictureDisp (= StdPicture)
  • Public Declare Sub OleCreatePictureIndirect Lib "oleaut32.dll" (ByRef lpPictDesc As PICTDESC, ByRef riid As GUID, ByVal fOwn As Long, ByRef lplpvObj As IPictureDisp)
  • ' Convertit un pointeur vers un icone en IPictureDisp utilisable dans VB
  • ' hIcon : handle de l'icone à convertir
  • ' Renvoie une interface IPictureDisp (ou StdPicture pour VB)
  • Public Function GetIconFromHandle(hIcon As Long) As IPictureDisp
  • ' Le REFIID de IPictureDisp (=GUID)
  • Dim IID_IPictureDisp As GUID
  • ' Infos sur l'icone
  • Dim lpIcon As PICTDESC
  • 'on met place l'IID de IPictureDisp
  • IID_IPictureDisp.Data1 = &H7BF80981
  • IID_IPictureDisp.Data2 = &HBF32
  • IID_IPictureDisp.Data3 = &H101A
  • IID_IPictureDisp.Data4(0) = &H8B
  • IID_IPictureDisp.Data4(1) = &HBB
  • IID_IPictureDisp.Data4(2) = &H0
  • IID_IPictureDisp.Data4(3) = &HAA
  • IID_IPictureDisp.Data4(4) = &H0
  • IID_IPictureDisp.Data4(5) = &H30
  • IID_IPictureDisp.Data4(6) = &HC
  • IID_IPictureDisp.Data4(7) = &HAB
  • ' On initialise les champs requis :
  • lpIcon.cbSizeofStruct = Len(lpIcon)
  • lpIcon.hImage = hIcon
  • ' le type : ICON
  • lpIcon.picType = PICTYPE_ICON
  • 'on demande la création d'une interface de type IPictureDisp pour le handle d'icône
  • 'et en indiquant de ne pas effacer le HICON quand l'interface est libéré
  • OleCreatePictureIndirect lpIcon, IID_IPictureDisp, 0, GetIconFromHandle
  • End Function
' Structure d'un GUID
Public Type GUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
End Type

' Structure contenant des infos sur une image
Public Type PICTDESC
    ' Normalement cette structure contient une union mais VB ne les gère pas
    cbSizeofStruct As Long      ' Taille de cette structure
    picType As Long             ' Type d'image : ICON, BITMAP, METAFILE, ENHMETAFILE
    ' Début union
        hImage As Long          ' Handle de l'image
        xExt As Long            ' Taille x de l'image pour une METAFILE
        yExt As Long            ' Taille y de l'image pour une METAFILE
End Type

' picType de PICTDESC pour une ICON
Public Const PICTYPE_ICON = 3

'permet de convertir une structure PICTDESC (et donc un handle d'image) en un IPictureDisp (= StdPicture)
Public Declare Sub OleCreatePictureIndirect Lib "oleaut32.dll" (ByRef lpPictDesc As PICTDESC, ByRef riid As GUID, ByVal fOwn As Long, ByRef lplpvObj As IPictureDisp)


' Convertit un pointeur vers un icone en IPictureDisp utilisable dans VB
' hIcon : handle de l'icone à convertir
' Renvoie une interface IPictureDisp (ou StdPicture pour VB)
Public Function GetIconFromHandle(hIcon As Long) As IPictureDisp
    ' Le REFIID de IPictureDisp (=GUID)
    Dim IID_IPictureDisp As GUID
    ' Infos sur l'icone
    Dim lpIcon As PICTDESC
    'on met place l'IID de IPictureDisp
    IID_IPictureDisp.Data1 = &H7BF80981
    IID_IPictureDisp.Data2 = &HBF32
    IID_IPictureDisp.Data3 = &H101A
    IID_IPictureDisp.Data4(0) = &H8B
    IID_IPictureDisp.Data4(1) = &HBB
    IID_IPictureDisp.Data4(2) = &H0
    IID_IPictureDisp.Data4(3) = &HAA
    IID_IPictureDisp.Data4(4) = &H0
    IID_IPictureDisp.Data4(5) = &H30
    IID_IPictureDisp.Data4(6) = &HC
    IID_IPictureDisp.Data4(7) = &HAB
    ' On initialise les champs requis :
    lpIcon.cbSizeofStruct = Len(lpIcon)
    lpIcon.hImage = hIcon
    ' le type : ICON
    lpIcon.picType = PICTYPE_ICON
    'on demande la création d'une interface de type IPictureDisp pour le handle d'icône
    'et en indiquant de ne pas effacer le HICON quand l'interface est libéré
    OleCreatePictureIndirect lpIcon, IID_IPictureDisp, 0, GetIconFromHandle
End Function

 Conclusion

En espérant que ça vous serve.

MadMatt


 Sources du même auteur

Source avec Zip COMMUNICATION INTER-PROCESSUS (IPC)
Source avec Zip OPÉRATIONS SUR LES CHAINES DE CARACTÈRE OPTIMISÉES ET ÉTENDU...
Source avec Zip Source avec une capture FISHTANK - SCREENSAVER INTERACTIF : AQUARIUM AVEC POISSONS V...
Source avec Zip Source avec une capture RÉCUPÉRER LA TEMPÉRATURE DES DISQUES DURS
Source avec Zip Source avec une capture WIN++ OPTIONS AVANCÉES SUR LES FENETRES ET PROCESSUS WINDOWS...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture RECUPERER L'ICON ASSOCIE A UN FICHIER par EBArtSoft
Source avec Zip UN MODULE SYSTEMTRAY POUR UNE UTILISATION FACILE ! par Nil
Source avec Zip SYSTRAY AMÉLIORER par max12
Source avec Zip CRÉATEUR D'ICON par casimodo
Source avec Zip Source avec une capture CHANGER UNE ICONE EN TEXTE par max12

Commentaires et avis

Commentaire de Galain le 06/04/2008 00:44:50

Bravo pour cette source
Je m'en suis servi dans mon projet : c'est nickel

Commentaire de Galain le 06/04/2008 00:48:05

Je me suis gouré pour la note : j'ai clicqué à gauche au lieu de clicquer à droite ! Quel c.. !!!!!! Si un admin peut modifier pour un 10/10 bien mérité

Commentaire de PCPT le 06/04/2008 02:20:04 administrateur CS

tu peux noter à nouveau

Commentaire de Galain le 16/06/2010 22:48:46 10/10

Avec 26 mois de retard 10/10
Merci Madm@tt

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Convertir un handle d'icone en type icon [ par TASIOT ] Bonjour, Voila je cherche à afficher dans un listView en tant qu'icone les icones des fichiers *.dll, *.exe etc.J'utilise donc la fonction ExtractIcon vb 2005 express - charger une icone dans un picturebox [ par PHILOUVB ] Je n'arrive pas à charger une icone dans un PictureBox.Voilà le code que j'ai écrit. Dites moi SVP ce qui ne va pas.Dim Iconimage as Ic Changer icone [ par daetips ] Comment changer l'icon d'un fichier déja compilé. sans resource hacker. Même si c'est un programme a qui on envoi des cmd genre chgicon;exe -icon moni handle Icone et picture [ par Jyver ] Bonjour, J'arrive à reccupérer le handle d'une icone (avec ExtractIconA) contenue dans "Shell32.dll" mais comment convertir ce nombre (as long) en un [.Net] ImageList - Icone [ par cbu ] Bonjour, j'ai mis des icones pour mon application notamment pour pouvoir changer celui ci sur un NotifyIcon.. Le problème est que ImageListPerso editer un icone [ par guyvdv ] Bonjour,Je veux essayer d'ecrire un programme pour pouvoir editer un icon qui existe deja , ou creeer un nouveau icon.Je n'ai aucune idee ou commencer Equivalent IPictureDisp pour les Icons ICO ? [ par threadom ] Bonsoir, j'ai beau cherché je trouve pas alors je viens m'adresser a vous. Dans un UserControl j'ai besoin d'ajouter une propriété icon tout comme cel Icone souris modification [ par kcin ] Salut à tous...Malgré mes recherches sur le net, je n'arrive pas à trouver ce que je souhaite concernant le fait que je veux changer l'îcone de la sou [vbscript] creation icone [ par leSaleGauSS ] bonjour, j'ai créé un script qui doit mettre une icone sur le bureau si le lien est bon et si l'icone n'est pas déjà présent. Lorsque je le lance il m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,451 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales