PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Tuto : Installation Police
Tuto : Installation Police
Débuté par Baptiste - BLV TECH, 26 avr. 2015 15:05 - 7 réponses
Membre enregistré
261 messages
Posté le 26 avril 2015 - 15:05
Hello,

J'ai cherché sur internet comment installer une police via Windev. N'ayant rien trouver de proprement fonctionnel. J'ai crée un exécutable qui fonctionne parfaitement pour installer une ou plusieurs police au format TTF.

- La ou les polices doivent etre mises a la racine de l'executable "Install_Police.exe"

- Le programme "Install_Police.exe" doit etre obligatoirement lancer en Administrateur !

- La ou les polices sont fonctionnel immédiatement apres l'instalation mais sont visible dans le dossier "Police" de Windows apres un redémarrage de l'ordianteur.

Developpé sous Windev 18 (01F180063c)

Code :

Liste_Polices est une chaîne = fListeFichier(fRepExe()+"\*.ttf", frRécursif)
POUR TOUTE CHAINE Chemin_Police DE Liste_Polices SEPAREE PAR RC // Pour chaque fichier .TTF trouvé
Nom_Fichier_Avec_Extention est une chaîne ASCIIZ sur 255 = fExtraitChemin(Chemin_Police,fFichier+fExtension)
Nom_Fichier_Sans_Extention est une chaîne ASCIIZ sur 255 = fExtraitChemin(Chemin_Police,fFichier)
Chemin_Police_Windows est chaîne = SysRep(srFontes)+"\"+Nom_Fichier_Avec_Extention

SI PAS RegistreExiste("HKEY_LOCAL_MACHINE\SOFTWARE\"+Nom_Fichier_Sans_Extention) ALORS // Si la police n'existe pas dans la base de registre.
RegistreEcrit("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts",Nom_Fichier_Sans_Extention+" (TrueType)",Nom_Fichier_Avec_Extention) // Ecriture de la police dans la base de registre.
FIN
SI PAS fFichierExiste(Chemin_Police_Windows) ALORS // Test si le fichier n'existe pas dans le dossier des polices Windows.
SI fCopieFichier(Chemin_Police,Chemin_Police_Windows) ALORS // Copie le fichier dans le dossier police de windows
API("GDI32","AddFontResourceA",&Nom_Fichier_Avec_Extention) // Installation de la police
FIN
FIN
FIN


Lien programme : http://cloart.fr/Windev/Installation_Police.zip

J’espère que ça en aidera plus d'un !

a+
Membre enregistré
275 messages
Posté le 26 avril 2015 - 20:13
Bonjour Baptiste,
Je n'ai personnellement jamais rencontré de problèmes de ce genre, mais ton code est intéressant comme cas d'école.
Et donc merci pour le partage !

Bon dev !

--
René MALKA
Membre enregistré
198 messages
Posté le 29 avril 2015 - 23:41
Excellent !
J'ai justement le même soucis.
Merci pour ce partage.
Membre enregistré
64 messages
Posté le 01 mars 2017 - 15:23
Bonjour à tous, pour compléter l'excellent bout de code de Batiste, le code pour ouvrir les droits sur le répertoire FONT de Windows, ne pas oublier de lancer votre exe en mode administrateur.

Liste_Polices est une chaîne = fListeFichier(fRepExe()+[fSep]+"fonts\*.ttf", frRécursif) // Répertoire d'origine des fonts
sAttRepFonts est une chaîne= "DRS"// Attribut du répertoire \Windows\Fonts par défaut (D=Directory, R=Read, S=System)
sAttForCopy est une chaîne= "DS"// Attribut pour la copie de ton fichier (D=Directory, S=System)
sErr est une chaîne= fAttribut(SysRep(srFontes), sAttForCopy) // Changement de l'attribut du répertoire FONT de Windows
SI sErr = "ERR" ALORS
Erreur(ErreurInfo)
RETOUR
SINON
POUR TOUTE chaîne Chemin_Police de Liste_Polices SEPAREE PAR RC // Pour chaque fichier .TTF trouvé
Nom_Fichier_Avec_Extention est une chaîne ASCIIZ sur 255 = fExtraitChemin(Chemin_Police,fFichier+fExtension)
Nom_Fichier_Sans_Extention est une chaîne ASCIIZ sur 255 = fExtraitChemin(Chemin_Police,fFichier)
Chemin_Police_Windows est chaîne = SysRep(srFontes)+"\"+Nom_Fichier_Avec_Extention
SI PAS RegistreExiste("HKEY_LOCAL_MACHINE\SOFTWARE\"+Nom_Fichier_Sans_Extention) ALORS // Si la police n'existe pas dans la base de registre.
RegistreEcrit("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts",Nom_Fichier_Sans_Extention+" (TrueType)",Nom_Fichier_Avec_Extention) // Ecriture de la police dans la base de registre.
FIN
SI PAS fFichierExiste(Chemin_Police_Windows) ALORS // Test si le fichier n'existe pas dans le dossier des polices Windows.
SI fCopieFichier(Chemin_Police,Chemin_Police_Windows) ALORS // Copie le fichier dans le dossier police de windows
API("GDI32","AddFontResourceA",&Nom_Fichier_Avec_Extention) // Installation de la police
FIN
FIN
FIN
sErr = fAttribut(SysRep(srFontes), sAttRepFonts) // Attribut d'origine du répertoire FONT de Windows
SI sErr = "ERR" ALORS
Erreur(ErreurInfo)
RETOUR
SINON
Info("Copie OK")
FIN
FIN
Membre enregistré
40 messages
Posté le 20 janvier 2021 - 19:33
Bonjour à tous,
j'exhume ce sujet car j'y suis tombé dessus en cherchant à résoudre un problème similaire, et je vois qu'il y a ici des grosses compétences en matière de polices, registres, API...
Une de mes clientes essaie d'utiliser mon application Windows avec un Mac et un émulateur (PlayOnMac). L'Etat s'affiche correctement pour les graphiques, mais aucun texte n'apparait. Pourtant, certains textes sont en police Tahoma, qui est sensée être compatible Mac.
Est-ce que vous pensez que c'est un problème de compatibilité Windows / Mac ?
Membre enregistré
3 765 messages
Posté le 20 janvier 2021 - 21:28
Fabrice, ta demande n'a rien à voir avec le sujet
Posté le 29 avril 2021 - 13:05
Merci à Baptiste et Frédéric pour cette belle et efficace fonction encore très utile aujourd'hui :) !
Membre enregistré
261 messages
Posté le 07 mai 2021 - 09:20
Bonjour,
En complément, voici comment vérifier si une police existe.

LOCAL
ListePoliceRechercher est un tableau de chaîne = ["Roboto Condensed","Tw Cen MT Condensed"]
ListePoliceInstaller est un tableau de chaîne
ListtePoliceNonInstaller est une chaîne

CSVVersTableau(PoliceListe(),ListePoliceInstaller)

POUR i = 1 _À_ ListePoliceRechercher..Occurrence
SI TableauCherche(ListePoliceInstaller,tcLinéairePremier,ListePoliceRechercher[i]) <> -1 ALORS
ListtePoliceNonInstaller+=[RC]+" - "+ListePoliceRechercher[i]
FIN
FIN

SI ListtePoliceNonInstaller <> "" ALORS
TitreSuivant("Police d'écriture manquante")
Erreur("Ce programme a besoin des polices d'écriture suivantes pour une utilisation optimale :"+RC,ListtePoliceNonInstaller,RC+"Merci de prendre contact avec le service informatique pour effectuer l'installation.")
FIN


--
Baptiste CLOART
Freelance
b.cloart@blv-tech.com
06.88.74.80.65
www.linkedin.com/in/cloart
www.blv-tech.com