Créer un dossier puis en modifier l'icône

[Résolu]
Signaler
Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Salut à tous !

Une petite chose m'embête depuis quelques temps : je souhaite modifier l'icône d'un dossier créé à l'aide la fonction MkDir. Je crée donc un fichier Desktop.ini de la manière suivante :

'<-----------------------------------------------

Private Declare Function ATTRIBUTS Lib "kernel32"
Alias "SetFileAttributesA" ( _
ByVal lpFileName As String, _
ByVal dwFileAttributes As Long) As Long

Sub Dossier()

MkDir sDossier
Open sDossier & "\Desktop.ini" For Output As #1
Print #1, "[.ShellClassInfo]" & vbCrLf & _
"IconFile=" & sChemin & "Dossiers.ico" & _
vbCrLf & "IconIndex=0"
Close #1
'Attributs : caché (&H2), système (&H4)
ATTRIBUTS sDossier & "\desktop.ini", &H2 Or &H4
End Sub

'<-----------------------------------------------

sDossier désigne l'adresse du dossier créé.
IconFile=0 car c'est l'index de l'icône dans le fichier .ico

Ayant fait tout cela... eh bien mon dossier ne change pas d'icône javascript:Insert_Emoticon('/imgs2/smile_shock.gif');

Quelqu'un a-t-il une idée pour ça ?
Cacophrène

11 réponses

Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
Salut !

Voilà le message pour la solution.

Private Sub Ecrire(sDossier As String)
MkDir sDossier
Open sDossier & "\Desktop.ini" For Output As #1
Print #1, "[.ShellClassInfo]" & vbCrLf & _
"IconFile=" & sChemin & "Dossier.ico" & _
vbCrLf & "IconIndex=0"
Close
SetAttr sDossier, vbSystem
SetAttr sDossier & "\Desktop.ini", vbSystem + vbHidden
End Sub

Donc : le DOSSIER dont on veut modifier l'icône doit être en vbSystem, chose que je ne faisais pas...
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
Ah, souci avec Opera... plus de sauts de lignes !
Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
Salut à tous !

Une petite chose m'embête depuis quelques temps : je souhaite modifier l'icône d'un dossier créé à l'aide la fonction MkDir. Je crée donc un fichier Desktop.ini de la manière suivante :

'<-----------------------------------------------

Private Declare Function ATTRIBUTS Lib "kernel32"
Alias "SetFileAttributesA" ( _
ByVal lpFileName As String, _
ByVal dwFileAttributes As Long) As Long

Sub Dossier()

MkDir sDossier
Open sDossier & "\Desktop.ini" For Output As #1
Print #1, "[.ShellClassInfo]" & vbCrLf & _
"IconFile=" & sChemin & "Dossiers.ico" & _
vbCrLf & "IconIndex=0"
Close #1
'Attributs : caché (&H2), système (&H4)
ATTRIBUTS sDossier & "\desktop.ini", &H2 Or &H4
End Sub

'<-----------------------------------------------

sDossier désigne l'adresse du dossier créé.
IconFile=0 car c'est l'index de l'icône dans le fichier .ico

Ayant fait tout cela... eh bien mon dossier ne change pas d'icône javascript:Insert_Emoticon('/imgs2/smile_shock.gif');

Quelqu'un a-t-il une idée pour ça ?
Cacophrène
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
Même après redémarrage de Windows ? Cela peut venir du cache des icônes par exemple.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
Salut Darksidious !

D'abord merci pour l'intérêt que tu portes à ma question.

J'ai redémarré l'ordinateur après avoir créé le dossier et le fichier ini... rien ne change après, mon dossier n'a toujours pas l'icône voulue. J'ai tenté d'appliquer le programme à un dossier qui existait déjà (donc pas de MkDir), même résultat...

Cordialement,
Cacophrène
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
Bon ben désolé alors, je ne vois pas d'où ca peut venir !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
Re !

J'ai essayé l'API WritePrivateProfileString histoire de voir si ça changeait quelque chose... Aucun résultat.

Juste une chose Darksidious : si tu essaies mon code sur ton pc, est-ce que ça marche ? (je me dis que c'est peut-être mon pc qui est dingue, je finirais bien par le menacer avec la même hache que mon image...)

Merci d'avance,
Cacophrène
Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
PS : J'oubliais ci-dessus. Je suis allé voir la source de MasterHack (http://www.vbfrance.com/code.aspx?ID=25390) qui crée un ini comme moi... mais sur des dossiers existants, et ça marche ! Alors misère, je n'y comprends rien.

Cordialement,
Cacophrène
Messages postés
251
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
1
Enfin !!!

Je viens de trouver...
Je dois ajouter Hide et Show successivement, et ça marche... Serait-ce donc un problème de rafraîchissement quelconque ?
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
Non ca ne marche pas chez moi non plus.


Note : j'ai réussi à le faire marcher en manuel uniquement !


DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
Exact, bien vu !



C'est cool ce petit code là, ca peut faire un petit utilitaire bien sympa !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/