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 :

[WinAPI] Infos extensions fichiers


Sujet :

API, COM et SDKs Delphi

  1. #1
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut [WinAPI] Infos extensions fichiers
    Salut
    je voudrais pouvoir récupérer, d'après une extension de fichier, l'icone associé et aussi le nom que lui donne windows (Ex: pour .mp3 c'est "Winamp Media File") sans passser par la base de registre parce que c'est un peu lourd... Est-ce qu'il existe des fonctions API ou autres qui permettent de faire ça?

    Autre question : Une fois que j'ai récupéré le fichier dans lequel se trouve l'icone, si le fichier est du type "Bidule.dll,%1" (Le premier icone dans la librairie Bidule.dll), comment faut-il s'y prendre pour extraire cet icone et le stocker dans un TBitmap par exemple?

    Merci d'avance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Sans passer par la base de registre ça me paraît impossible !

    Il y a un article complet ici à ce sujet :
    http://www.latiumsoftware.com/en/pascal/0006.php
    (regarde en particulier la fonction GetAssociatedSmallIcon)
    "It's more fun to compute !"

  3. #3
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK merci

    Et pour l'autre question?
    Est-ce que dans la DLL, directement se trouve un fonction qui renvoie un HBITMAP ou il y a une fonction toute prête qui fait ça?

    Merci d'avance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Moi j'utilise un méthode différente (récupérée sur Internet) : Dans un premier temps, je crée une imagelist contenant les icones systèmes, et grâce à la fonction GetExtIconIndex je récupere l'index de l'icone associée à l'extension dans l'imagelist ainsi que le type de fichier.

    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
    28
    29
    30
    31
    32
    33
    34
    35
     
    // Partie Création de l'image liste
        // Créer une image list avec les icones correspondant aux extensions de fichiers
        Self.SysImage := TImageList.Create(nil);	// Quel AOwner ???
        Self.SysImage.ShareImages := true;
        Self.SysImage.Handle := SHGetFileInfo('', 0, SHFileInfo, SizeOF(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
     
     
    //
    // Récupère l'index de l'icone associée à l'extension ainsi que son type
    //
    // Parametres:
    //
    //
    function GetExtIconIndex(Ext: String; Attributs: DWORD; var TypeFichier :string): Integer;
    var
    	SHFileInfo: TSHFileInfo;
    begin
    	//Il faut le "." avant
       	if Ext[1] <> '.' then
        	Ext := '.' + Ext;
     
    	// En cas d'erreur
        Result := -1;
        TypeFichier := '';
     
        // On récolte les info pour l'extension
    	//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetfileinfo.asp
        if SHGetFileInfo(PChar(Ext), Attributs, SHFileInfo, SizeOf(TSHFileInfo),
                 SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_TYPENAME) <> 0 then
        begin
            TypeFichier := SHFileInfo.szTypeName; //Quel est le type de fichier
            Result := SHFileInfo.iIcon; //index de l'icone dans l'image list du systeme
    	end;
    end;

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    OK merci!!
    la méthode de cpdump fonctionne à merveille
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

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

Discussions similaires

  1. Tester et récupérer des infos sur fichier distant
    Par cybertj dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2006, 09h18
  2. récuperer des infos dasn fichier xml
    Par alliance dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 14/02/2006, 16h57
  3. [info]Les fichiers .class
    Par vinzzzz dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/03/2005, 00h43
  4. [info] compresser fichier...?
    Par doudine dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 06/01/2005, 13h53
  5. Réponses: 3
    Dernier message: 25/07/2002, 10h42

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