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

Delphi Discussion :

icone associée a un fichier


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut icone associée a un fichier
    bonjour,

    j'ai suivi cette source pour récuperer les icones associées a un 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
    function GetIcon(const FileName: string; const Large: Boolean): TIcon;
    var
      sfi: TSHFILEINFO;
      i: Integer;
    begin
      Result := nil;
      try
        Result := TIcon.Create;
        if Large then
          i := SHGFI_LARGEICON
        else
          i := SHGFI_SMALLICON;
        SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(sfi), SHGFI_ICON or SHGFI_USEFILEATTRIBUTES or i);
        Result.Handle := sfi.hIcon;
      except
        if Result <> nil then
          FreeAndNil(Result);
      end;
    end;
    ce que je cherche a faire, c'est ajouter les icones associées aux extensions de certains fichiers dans une imagelist, et ensuite les insérer dans un listview

    seulement j'ai deux problèmes :

    - le premier est que certaines icones (celles de mozilla pour les fichier html) n'appraissent pas (j'ai l'icone qui apparait quand windows ne sait pas avec quel programme ouvrir le fichier)

    - le deuxieme est que certaines icones ou il y a une sorte d'ombre, apparaissent très mal, et la qualité est très mauvaise


    avez-vous une idée, ou une solution plus pratique que la mienne ?


    merci

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    salut

    essai avec ce code la

    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
    Function GetIcon(edFileName : string) : TIcon;
    var
      shInfo : TSHFileInfo;
      sFileType : string;
    begin
      Result := Nil;
      { recuper les infos sur le type de fichier provenant de SHGetFileInfo }
      SHGetFileInfo(PChar(edFileName), 0, shInfo, SizeOf(shInfo), SHGFI_TYPENAME);
      sFileType := shInfo.szTypeName;
     { est un racourci? }
      if sFileType = 'Shortcut' then
        SHGetFileInfo(PChar(edFileName), 0, shInfo, SizeOf(shInfo),SHGFI_LINKOVERLAY or SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX)
      else      { ...les autres sont traiter comme des fichiers normaux }
        SHGetFileInfo(PChar(edFileName), 0, shInfo, SizeOf(shInfo), SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX);
     
      if shInfo <> 0 Then
      begin
        Result := TIcon.Create;
        try
          Result.Handle := shInfo.hIcon;
        except
          Result.free;
        end;
      end;
    end;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    non, ça ne marche pas

    j'ai toujours l'icone indiquant que windows ne sait pas avec quel programme ouvrir le fichier pour les documents HTML

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    salut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ExtractAssociatedIcon(HInstance,filename,IconIndex);
    @+ Phil

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    j'obtiens la même chose

    mais je verrais ça plus tard.

    maintenant est-ce que vous sauriez comment faire exactement la même chose, de manière à ce que ce soit avec le type de fichier ?

    par exemple si je met .doc, le programme devrait me répondre "Microsoft Word Document"

    merci

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    salut

    regarde la a priori leur code fonctionne
    le seul truc que j'ai observer comme difference c'est que l'on as pas
    initialisé la variable par un zeromemori
    regarde ici


    tu cherche le type de fichier associer ?
    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
     
     
    function GetTypefichierAssoc(FileNane: String; Attribus: DWORD):string;
    var SHFileInfo: TSHFileInfo;
      begin
       Extension := GetFileExt(String(FileNane));
       SHGetFileInfo(PChar(Extension), Attribus, SHFileInfo, SizeOf(TSHFileInfo),
                     SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_TYPENAME);
     
       Result := SHFileInfo.szTypeName; //Quel est le type de fichier
    end;
     
    Function GetIconIndex(FileNane: String; Attribus: DWORD):Integer;
    var SHFileInfo: TSHFileInfo;
      begin
         Extension := GetFileExt(String(FileNane));
     
       SHGetFileInfo(PChar(Extension), Attribus, SHFileInfo, SizeOf(TSHFileInfo),
                 SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_TYPENAME);
         Result := SHFileInfo.iIcon; //index de l'icone dans l'image list du systeme
      end;

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Points : 41
    Points
    41
    Par défaut
    ok merci bcp anapurna

    ton code marche nikel


    sinon pour les icones, je continue a voir des .html qui n'ont pas leur icone associée je ne sais pas pourquoi

    enfin ce n'est pas essentiel a mon programme


    merci encore

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    salut

    regarde si le code fournit te convient chez moi cela fonctionne correctement

    @+ phil
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. FTP client, icone associée à un fichier
    Par Pasqualini dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/10/2012, 17h51
  2. Réponses: 0
    Dernier message: 23/01/2011, 20h24
  3. [WD15] Associer une icone à un type de fichier dans windows
    Par L.Lemarchand dans le forum WinDev
    Réponses: 1
    Dernier message: 24/05/2010, 05h49
  4. charger des icones associé aux fichiers
    Par Taka's tiger dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/12/2006, 02h59
  5. Les icones associées aux fichiers
    Par diFaenza dans le forum C++Builder
    Réponses: 1
    Dernier message: 04/12/2006, 02h51

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