Installer une police

[Résolu]
Signaler
Messages postés
61
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
29 août 2020
-
Messages postés
61
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
29 août 2020
-
Bonjour à tous

Voilà mon problème.
Je voudrais installer une police à l'aide de lignes de code VB6.
J'ai trouvé sur le forum plusieurs sources utilisant les APIs   AddFontRessource("nom_police.ttf")  et SendMessage(hwnd_broacast, wm_fontchange, 0, 0) mais la police n'est pas vraiment installée dans Windows (je l'ai bien sûr copiée auparavant dans le répertoire Fonts de Windows avec un CopyFile )  : elle est fonctionnelle mais seulement jusqu'à l'arrêt de Windows et si je teste les polices installées avec Screen.Fonts , elle n'en fait pas partie.
Au redémarrage elle ne peut plus être utilisée.

Quelqu'un aurait-il la solution pour installer réellement une police dans Windows , sans que l'utilisateur ne soit obligé d'ouvrir manuellement le dossier Fonts ?

Merci d'avance et de toutes façons, merci pour ce site et ce forum très instructifs ....

6 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonsoir,

Heureux que tu aies constaté qu'il était important d'écrire dans cette clé !

Peiné de voir que tu n'aies pas encore trouvé comment déterminer la version de l'OS !

Je t'invite donc à t'intéresser maintenant à la fonction GetVersionEx de la lubrairie Kernel32 de l'Api de Windows, juste pour voir à quoi elle pourrait te servir, dans cette affaire ...
Ce ne sera pas difficile si tu t'y penches un peu et je compte sur toi pour y parvenir.
Il te restera ensuite à écrire dynamiquement dans la bonne clé et les exemples et sources pour ce faire ne manquent pas sur ce forum.

NOTA : s'il subsiste un doute sur la partie du nom qui correspond, dans le chemin de la clé, à la version Windows de la machine client : un truc : tester si cette clé existe et contient bien déjà des fonts avant d'y ajouter la "valeur" de la tienne.
Messages postés
143
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2011

Hello

Pour les instalations de police (ttf) voir le Help de Windows.

a plus sur VBFrance.com
42wawa42
Messages postés
61
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
29 août 2020

@ 42wawa42
Merci de ta réponse mais que veux-tu dire par le Help de windows ?
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonsoir,

Fais un tour dans ta base de registre et fais-y une recherche avec le mont Fonts...
Tu comprendras.
Messages postés
61
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
29 août 2020

Bonsoir
@jmfmarques
J'ai déjà bien sûr regardé dans la base de registre et les polices sont listées dans la clé   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts( dans Windows XP SP2 ).
Effectivement après l'appel de ces APIs , la police est fonctionnelle mais n'apparait pas dans cette clé.
Par contre si je rajoute une valeur pour cette police dans cette clé, là tout fonctionne.
Tu parles de cela ?
Tu suggères donc d'écrire le nom de la police dans cette clé avec WSH ou les APIs qui donnent accès au registre ?
Mais cette clé , elle ne dépend pas de la version de Windows ? Il n'y a pas d'API qui fasse directement l'inscription des polices dans le registre ? C'est le sens de ma question depuis le début.

Merci d'éclairer ma pauvre lanterne...
Messages postés
61
Date d'inscription
lundi 20 décembre 2004
Statut
Membre
Dernière intervention
29 août 2020

Bonjour,


merci jmfmarques pour toutes ces indications.


J'arrive donc bien à installer ma police en utilisant les fonctions AddFontRessource , SendMessage puis en écrivant dans la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts grâce aux fonctions   RegOpenKeyEx , RegSetValueEx et RegCloseKey  .
J'ai obtenu la version de Windows avec GetVersinEx, pour vérifier s'il s'agissait d'une version NT ou 95/98/Me .

Merci encore !