Page 1 sur 1

résolu : création fichier desktop.ini

Publié : mer. 24/janv./2007 19:31
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

Publié : mer. 24/janv./2007 21:42
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_()

Publié : mer. 24/janv./2007 21:58
par Patrick88
mercix

pat

Publié : mar. 30/janv./2007 14:56
par Gillou
Oui tu peux aussi à la place de PathMakeSystemFolder_(FolderName)

SetFileAttributes(FolderName, GetFileAttributes(FolderName) | 1)

Publié : mar. 30/janv./2007 16:14
par Flype
ah oui merci, en fait,
SetFileAttributes() doit s'appliquer au répertoire et non au fichier 'desktop.ini'.

Publié : mar. 30/janv./2007 18:37
par Dr. Dri
mais faut éviter les trucs comme "1"
vaut mieux utiliser la constante appropriée ^^

Dri