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
enregistrer une icone
Re: enregistrer une icone
voir comment fonctionne ce codedjfeeler2 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

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
Merci pour vos reponse
oui j'ai la licence ! avec un peu de recherche j'ai trouvé ce code
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