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

C# Discussion :

Ajouter mini icônes aux dossiers ou fichiers [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 10
    Par défaut Ajouter mini icônes aux dossiers ou fichiers
    Bonjour,

    Je me demandais s'il était possible d'ajouter, via un script, des mini-icônes sur l'icône par défaut d'un fichier ou un dossier?. Un peu comme celles qu'on retrouve sur les dossiers dropbox.

    Cela me permettrait de différencier des dossiers entre eux tout en voyant vite à quel type de fichier on à faire.

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Par défaut
    Bonjour,

    Vous trouverez un exemple ici : Create Icons for Folders in Windows Explorer, Using C#.

    On y retrouve dans les commentaire un code (complet ?) :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    [DllImport("Shell32.dll", CharSet = CharSet.Auto)]
            static extern UInt32 SHGetSetFolderCustomSettings(ref LPSHFOLDERCUSTOMSETTINGS pfcs, string pszPath, UInt32 dwReadWrite);
     
            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
            struct LPSHFOLDERCUSTOMSETTINGS
            {
                public UInt32 dwSize;
                public UInt32 dwMask;
                public IntPtr pvid;
                public string pszWebViewTemplate;
                public UInt32 cchWebViewTemplate;
                public string pszWebViewTemplateVersion;
                public string pszInfoTip;
                public UInt32 cchInfoTip;
                public IntPtr pclsid;
                public UInt32 dwFlags;
                public string pszIconFile;
                public UInt32 cchIconFile;
                public int iIconIndex;
                public string pszLogo;
                public UInt32 cchLogo;
            }
     
     
    /// <summary>
            /// Sets custom icon on folder
            ///
            /// </summary>
            /// <param name="icoFile"></param>
            /// <param name="FolderPath"></param>
            private void SetFolderIcon(string icoFile, string FolderPath)
            {
                try
                {
                    LPSHFOLDERCUSTOMSETTINGS FolderSettings = new LPSHFOLDERCUSTOMSETTINGS();
                    FolderSettings.dwMask = 0x10;
                    FolderSettings.pszIconFile = icoFile;//@"D:\My Pictures\testImg\IconPack\ICO\BlankFolder.ico";
                    //FolderSettings.iIconIndex = 0;
     
                    UInt32 FCS_READ = 0x00000001;
                    UInt32 FCS_FORCEWRITE = 0x00000002;
                    UInt32 FCS_WRITE = FCS_READ | FCS_FORCEWRITE;
     
                    string pszPath = FolderPath;//@"G:\FreeZone\New folder\New folder";
                    UInt32 HRESULT = SHGetSetFolderCustomSettings(ref FolderSettings, pszPath, FCS_FORCEWRITE);
                    //Console.WriteLine(HRESULT.ToString("x"));
                    //Console.ReadLine();
                }
                catch (Exception ex)
                {
                    // log exception
                }
            }
    En fait il y a toujours un fichier nommé Desktop.ini qui est utilisé (fichier système et caché), et c'est sur ce dernier que vous allez indiquer le chemin vers l'icone.
    Cela ce fait dans le code ci-dessus via la fonction SHGetSetFolderCustomSettings qui se trouve dans Shell32.dll.

    Etanne

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 10
    Par défaut
    Merci!
    Je connaissais cette technique mais son problème c'est que la modification de l'icône n'est pas instantanée ! (peut-être du au cache?)

    Si tu regardes les dossiers dropbox (en affichant les fichiers cachés), il n'a pas de fichier de configuration desktop.ini. De plus quand tu vas dans les propriétés du dossier : la petite icône verte v n'est pas affiché sur l'icône.
    J'aimerais savoir comment faire cela???

    J'ai déjà effectué des recherches Google mais sans succès.

    Une idée ?

  4. #4
    Membre éclairé
    Avatar de Etanne
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 469
    Par défaut
    Il semblerait qu'une icone supportant les différentes tailles soit conseillé...
    Folder icon change issue - Windows application, C#

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

Discussions similaires

  1. [PHP 5.3] Ajouter des données aux fichiers uploadés
    Par Ashina dans le forum Langage
    Réponses: 11
    Dernier message: 05/11/2012, 14h23
  2. Ajouter des lignes aux fichiers sources créés
    Par shaiHulud dans le forum Eclipse
    Réponses: 2
    Dernier message: 06/10/2011, 21h40
  3. Réponses: 2
    Dernier message: 18/03/2011, 20h18
  4. Ajouter un onglet aux propriétés des fichiers Windows
    Par gregoryforel dans le forum Windows
    Réponses: 4
    Dernier message: 10/10/2007, 21h16
  5. [C#] Acces aux dossiers et fichiers d'un Serveur
    Par laetyboop dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/04/2006, 11h08

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