Page 1 sur 1
enregistrer une icone
Publié : ven. 31/août/2007 17:23
par djfeeler2
Salut a tous !
J'aimerais savoir s'il existe une fonction ou un moyen pour récupérer l'icone d'un fichier pous que je puisse l'afficher dans une listeicongadget ???
merci d'avance
Re: enregistrer une icone
Publié : ven. 31/août/2007 18:45
par Backup
djfeeler2 a écrit :Salut a tous !
J'aimerais savoir s'il existe une fonction ou un moyen pour récupérer l'icone d'un fichier pous que je puisse l'afficher dans une listeicongadget ???
merci d'avance
voir comment fonctionne ce code
Code : Tout sélectionner
; Idea from Rikuk
; File specifies the File where Icon is extracted
; Icon = 0 To ? --> Return handle of Image
; Icon = -1 --> Return the count of Icon
Procedure IconExtract(File.s,Icon.l)
ProcedureReturn ExtractIcon_(0,File,Icon)
EndProcedure
fichier$ = OpenFileRequester("ouvrir fichier icone","","Fichier|*.*",0)
;/ Test
Count=IconExtract(fichier$,-1)
OpenWindow(0,0,0,130,80,Str(Count)+" Icons",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ButtonImageGadget(0,10,10,48,48,IconExtract(fichier$,pointer))
TextGadget(1,80,30,40,20,"n° 1")
TextGadget(2,10,60,130,20,GetFilePart(fichier$))
Repeat
event=WaitWindowEvent()
If event= #PB_Event_Gadget And EventGadget()=0 And EventType()=#PB_EventType_LeftClick
pointer+1
If pointer=Count : pointer=0 : EndIf
SetGadgetState(0,IconExtract(fichier$,pointer))
SetGadgetText(1,"n° "+Str(pointer+1))
EndIf
Until event=#PB_Event_CloseWindow
Publié : ven. 31/août/2007 18:45
par Chris
Non. Pas de commmande dans PureBasic pour faire ça.
Si tu as la licence de PureBasic, tu peux le faire avec l'Api, sinon, tu peux .... heu... je sais pas.

Publié : ven. 31/août/2007 22:17
par djfeeler2
Merci pour vos reponse
oui j'ai la licence ! avec un peu de recherche j'ai trouvé ce code
Code : Tout sélectionner
; Auteur : Denis - Le Soldat Inconnu
; Version de PB : 3.90
;
; Explication du programme :
; Récupérer l'icône au format 16*16 ou 32*32 associé à un fichier ou à un dossier.
Procedure.l ExtractSmallIconFile(IconPath.s)
; Cette procedure permet d'extraire l'ID de l'icône 16*16 associé au type de fichier ou au dossier dont l'adresse est IconPath
SHGetFileInfo_(IconPath, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_ICON | #SHGFI_SMALLICON)
ProcedureReturn InfosFile\hIcon
EndProcedure
Procedure.l ExtractLargeIconFile(IconPath.s)
; Cette procedure permet d'extraire l'ID de l'icône 32*32 associé au type de fichier ou au dossier dont l'adresse est IconPath
SHGetFileInfo_(IconPath, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_ICON | #SHGFI_LARGEICON)
ProcedureReturn InfosFile\hIcon
EndProcedure
;- Exemple de chargement d'image
Procedure Open_Window()
If OpenWindow(0, 0, 0, 200, 130, "Test - Icône", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ButtonGadget(2, 5, 5, 190, 25, "Ouvrir un fichier")
ImageGadget(0, 92, 45, 16, 16, ExtractSmallIconFile("C:\")) ; Affiche l'icône au format 16 * 16 de "C:\"
ImageGadget(1, 84, 70, 32, 32, ExtractLargeIconFile("C:\")) ; Affiche l'icône au format 32 * 32 de "C:\"
EndIf
EndIf
EndProcedure
Procedure bouton()
Filtre$ = "Texte (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
Filtre = 2 ; utiliser par défaut le premier des trois filtres possibles
IconPath.s = OpenFileRequester("", "c:\", "Tous les fichiers|*.*", 0)
If IconPath <> ""
SetGadgetState(0, ExtractSmallIconFile(IconPath)) ; On change l'image
SetGadgetState(1, ExtractLargeIconFile(IconPath))
;SaveFileRequester("Choisissez un fichier à sauvegarder",Str(ExtractLargeIconFile(IconPath)), Filtre$, Filtre)
EndIf
EndProcedure
;- Debut du programme
Open_Window()
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
Select EventGadget() ; boutons, zone de texte, ...
Case 2
bouton() ; Si on souhaite ouvrir un fichier
EndSelect
EndIf
Until event = #PB_Event_CloseWindow
End