résolu : création fichier desktop.ini

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

résolu : création fichier desktop.ini

Message par Patrick88 »

lorsque je crée un fichier "desktop.ini" avec pb, il (windows" n'affecte pas d'icone au dossier spécifié...

c'est pourtant pas sorcier...

Code : Tout sélectionner

REPERTOIRE_PROJET.s = "D:\purebasic\Examples\Sources\Data"

If CreateFile(0,REPERTOIRE_PROJET+"\Desktop.ini")
	WriteStringN(0,"[.ShellClassInfo]")
	WriteStringN(0,"IconFile="+REPERTOIRE_PROJET+"\CdPlayer.ico")
	WriteStringN(0,"IconIndex=0")
	CloseFile(0)
EndIf
SetFileAttributes(REPERTOIRE_PROJET+"\Desktop.ini",#PB_FileSystem_System|#PB_FileSystem_Hidden)
pour arriver au même résultat avec nesplorer
-ouvrir une fenetre explorer = la touche windows à coté de control avec la touche E
- aller dans le dossier "purebasic\Examples\Sources" (ou un autre)
- faire souris bouton droit sur le dossier "data", selectionner propriété
- onglet personnaliser , bouton changer d'icone à coté du dossier
- bouton parcourir , prendre l'icone "CdPlayer du dossier data, faire "ouvrir", puis "ok", puis appliquer
- revenire dans l'explorer, le dossier a maintenant une zigone, alors pourquoi ça marche po avec mon bidouillage, hein ? grrr

pat
Dernière modification par Patrick88 le mer. 24/janv./2007 21:58, modifié 1 fois.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

après test j'obtenais le même résultat que toi.

mais en fouillant rapidement dans MSDN voici ce qu'il faut faire :

Code : Tout sélectionner

Procedure.l CustomizeFolder(FolderName.s, IconName.s)
  
  Protected FileID.l
  
  If Right(FolderName, 1) <> "\"
    FolderName + "\"
  EndIf
  
  FileID = CreateFile(#PB_Any, FolderName + "Desktop.ini")
  
  If FileID
    WriteStringN(FileID, "[.ShellClassInfo]")
    WriteStringN(FileID, "IconFile=" + IconName)
    WriteStringN(FileID, "IconIndex=0")
    CloseFile(FileID)
  EndIf
  
  If FileSize(FolderName + "Desktop.ini")
    ProcedureReturn PathMakeSystemFolder_(FolderName)
  EndIf
  
EndProcedure

; Test - Spécifier ici le dossier à personnaliser ainsi que l'icône désirée.

If CustomizeFolder("C:\PureXML2\help", "D:\ICONES\IconsXP\serviceconf.ico")
  MessageRequester("Information", "OK")
EndIf
Tu y étais presque :wink:
Il faut juste 'notifier' l' OS du changement grace à cette fonction de l'API : PathMakeSystemFolder_()
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

mercix

pat
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Oui tu peux aussi à la place de PathMakeSystemFolder_(FolderName)

SetFileAttributes(FolderName, GetFileAttributes(FolderName) | 1)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ah oui merci, en fait,
SetFileAttributes() doit s'appliquer au répertoire et non au fichier 'desktop.ini'.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

mais faut éviter les trucs comme "1"
vaut mieux utiliser la constante appropriée ^^

Dri
Répondre