IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Extraire les icones de Shell32.dll


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut Extraire les icones de Shell32.dll
    Salut,
    je voudrais récupérer les icones qui se trouvent dans la DLL Shell32, pour les utiliser dans mon programme dynamiquement, c'est à dire sans les mettre "en dur" dans une TImageList. J'ai utilisé ExtractIconEx pour faire ça, mais le hic c'est que les icones sont tout moches. Comment faire pour avoir des icones 16x16 tout beau, et en 24bits couleurs par exemple ?
    Merci.


    Sur une Fiche TForm1 Form1, j'ai posé un TTreeview Treeview1 et ensuite utilisé la procédure suivante (avec le uses ShellAPI):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    procedure TForm1.ExtractShell32Icons;
    var
      IconesListe: TImageList;
      i, NbShell32Icones: Cardinal;
      IconeLarge, IconeSmall: HICON;
      UneIcone: TIcon;
      Node: TTreeNode;
    begin
      TreeView1.Items.Clear;
      IconesListe := TImageList.Create(Self);
      NbShell32Icones := ExtractIconEx(PChar('c:\windows\system32\shell32.dll'), -1, IconeLarge, IconeSmall, 0);
      for i := 0 to NbShell32Icones - 1 do
      begin
        UneIcone := TIcon.Create;
        ExtractIconEx(PChar('c:\windows\system32\shell32.dll'), i, IconeLarge, IconeSmall, 1);
        UneIcone.ReleaseHandle;
        UneIcone.Handle := IconeSmall;
        IconesListe.AddIcon(UneIcone);
      end;
     
      TreeView1.Images := IconesListe;
      for i := 0 to NbShell32Icones - 1 do
      begin
        Node := TreeView1.Items.Add(nil, 'node n°' + IntToStr(i));
        Node.ImageIndex := i;
      end;
    end;
    J'ai aussi utilisé LoadImage qui est plus complète, mais pas mieux.
    A regarder de plus près, ça a l'air d'être un problême de transparence, l'information de transparence est perdue. Quelqu'un a une idée ?

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut
    Bon ben voilà il suffisait de régler le BkColor de mon imagelist à clWindow.
    Est ce la bonne méthode, je sais pas. Mais en tout cas j'obtiens le résultat que je voulais.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Ou se trouve la fonction ExtractIconEx ?

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Citation Envoyé par popo Voir le message
    Ou se trouve la fonction ExtractIconEx ?
    C'est une API Windows : http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

  5. #5
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut

    Citation Envoyé par popo Voir le message
    Ou se trouve la fonction ExtractIconEx ?
    tu peux l'utiliser en mettant dans tes uses l'unité ShellApi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraire les infos d'un tag ID3
    Par patkiller dans le forum Langages de programmation
    Réponses: 12
    Dernier message: 22/02/2025, 00h24
  2. [À télécharger] Extraire les icônes d'un fichier EXE ou DLL
    Par SfJ5Rpw8 dans le forum Vos téléchargements VB6
    Réponses: 0
    Dernier message: 13/11/2010, 19h43
  3. [shell32.dll]comment utiliser les icones ?
    Par deeal dans le forum Visual C++
    Réponses: 8
    Dernier message: 04/12/2006, 10h56
  4. Récuperer les icons des JDialog
    Par Pro_Fete dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 17/04/2003, 13h00
  5. Extraire les icônes d'une DLL
    Par Globus dans le forum MFC
    Réponses: 6
    Dernier message: 13/09/2002, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo