En fonction de son
extension, on peut obtenir l'icone associée de cette manière :
//IconeAssociéeFichier
(<sNomFichier>, <sNomChampImage>)
////Dessine dans un champ image l'icone associée à un type
de fichier
//
Paramètres :
// sNomFichier : nom d'un
fichier contenant une extension , on peut ne préciser que l'extension
// sNomChampImage : Nom du
champ image dans laquelle l'icone doit être dessinée
// Valeur de retour :
//
Aucune
PROCEDURE IconeAssociéeFichier(sNomFichier,sNomChampImage)
sExtension est une
chaîne
sNomProgramme est
une chaîne
nHndIcone est un
entier
SI
sNomFichier = "" OU
sNomChampImage = ""
ALORS
RETOUR
FIN
sExtension = Minuscule("."+ExtraitChaîne(sNomFichier,ChaîneOccurrence(sNomFichier,
".")+1,"."))
sNomProgramme = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\Classes\"+sExtension,"")
sNomProgramme = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\Classes\"+sNomProgramme+"\shell\open\command","")
//HKEY_CLASSES_ROOT\WinDev.Projet.10.0\Shell\open\Command
sNomProgramme = Minuscule(sNomProgramme)
SI Position(sNomProgramme,"%systemroot%")
<> 0 ALORS
sNomProgramme = Remplace(sNomProgramme,"%systemroot%",SysRep())
FIN
sNomProgramme =
SansEspace(ExtraitChaîne(sNomProgramme,1,"%"))
//Suppression
des guillemets :
sNomProgramme =
Remplace(sNomProgramme,"""""","")
sNomProgramme =
Remplace(sNomProgramme,Caract(34),"")
sNomProgramme = SansEspace(sNomProgramme)
////
Appel d'api pour récupérer le handle de l'icone de l'executable
nHndIcone = API("SHELL32","ExtractIconA",SysInstance(),sNomProgramme,0)
nHandleChpImage est un entier
nHandleChpImage = dDébutDessin(sNomChampImage)
API("user32","DrawIcon",nHandleChpImage,0,0,nHndIcone)