Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD 5.5b] Installation nouvelle police par programmation

7 réponses
Avatar
Discret
Bonjour,

Est-il possible d'installer une nouvelle police de caractères dans
Windows 98 et XP par programmation acec WD 5.5b ?

Merci par avance de votre aide.

@+ Laurent

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

7 réponses

Avatar
Eric LAURENT
Discret a écrit:

Bonjour,

Est-il possible d'installer une nouvelle police de caractères dans
Windows 98 et XP par programmation acec WD 5.5b ?

Merci par avance de votre aide.

@+ Laurent



Il suffit de copier la police dans le dossier Fonts du Système
d'exploitation.
Pour que la police soit effective, il faut quand même ouvrir le fichier pour
l'enregistrer dans la base de registre ou créer manuellement la clé dans :
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionFonts
(Exemple pour Windows 2000 ou NT:)
Avatar
Discret
Eric LAURENT a émis l'idée suivante :
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionFonts



Merci Eric pour cette information précieuse ;o)

Reste à savoir les clefs de la BDR pour W98 et sans doute aussi XP,
sans oublier l'emplacement du répertoire des polices car
c:WindowsFonts n'est pas systématique.

J'aimerais mieux trouver une solution la moins "en dur" possible, une
ch'tite dll commune à toutes les versions de Windows par exemple...

Une idée ?

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Discret
Discret a écrit :
Eric LAURENT a émis l'idée suivante :
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionFonts



Merci Eric pour cette information précieuse ;o)

Reste à savoir les clefs de la BDR pour W98 et sans doute aussi XP, sans
oublier l'emplacement du répertoire des polices car c:WindowsFonts n'est
pas systématique.

J'aimerais mieux trouver une solution la moins "en dur" possible, une ch'tite
dll commune à toutes les versions de Windows par exemple...

Une idée ?



Oups excusez moi, j'ai oublié de signer

@+ Laurent

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Pierre-Yves TAVERNIER
Bonjour,

Oui c'est possible !

Voici comment je fais (c'est du code wd55) :

//-----
si frep(RepInst+"POLICE",frrepertoire)<>"" alors
flistefichier(RepInst+"Police*.ttf","InstallePolice")
sinon
erreur("Le répertoire contenant les polices est inexistant !")
fin

//---------
Procedure InstallePolice(Chemin,NomFichier,Change,Pointeur)

LaPolice est une chaine asciiz sur 260 = extraitchaine(NomFichier,1,".")+".FOT"

lpszFontFile est une chaine asciiz sur 260 = Chemin+NomFichier

lpszCurrentPath est une chaine asciiz sur 260
lpszResourceFile est une chaine asciiz sur 260

si change=1 alors renvoyer faux


pidl est un entier long
Resultat est un entier long

Resultat = Appeldll32("shell32","SHGetSpecialFolderLocation",handle(),20,&pidl);
si pidl alors
Appeldll32("SHELL32","SHGetPathFromIDList",pidl,&lpszCurrentPath)
AppelDLL32("KERNEL32","GlobalFree",pidl)

si fcopiefichier(Chemin+nomfichier,lpszCurrentPath+""+nomFichier) alors

lpszResourceFile = lpszCurrentPath+""+LaPolice
AppelDLL32("Gdi32","CreateScalableFontResourceA" , 0, &lpszResourceFile,
&LaPolice, &lpszCurrentPath)
appeldll32("Gdi32","AddFontResourceA",&LaPolice)
sendmessage(HWND_BROADCAST,WM_FONTCHANGE,0,0)
fin
fin

Coridalement

PYT
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr

http://forums.club-internet.fr/
Avatar
Discret
Pierre-Yves TAVERNIER a exposé le 25/02/2004 :
Bonjour,

Oui c'est possible !

Voici comment je fais (c'est du code wd55) :

//-----
si frep(RepInst+"POLICE",frrepertoire)<>"" alors
flistefichier(RepInst+"Police*.ttf","InstallePolice")
sinon
erreur("Le répertoire contenant les polices est inexistant !")
fin

//---------
Procedure InstallePolice(Chemin,NomFichier,Change,Pointeur)

LaPolice est une chaine asciiz sur 260 =
extraitchaine(NomFichier,1,".")+".FOT"

lpszFontFile est une chaine asciiz sur 260 = Chemin+NomFichier

lpszCurrentPath est une chaine asciiz sur 260
lpszResourceFile est une chaine asciiz sur 260

si change=1 alors renvoyer faux


pidl est un entier long
Resultat est un entier long

Resultat =
Appeldll32("shell32","SHGetSpecialFolderLocation",handle(),20,&pidl); si pidl
alors Appeldll32("SHELL32","SHGetPathFromIDList",pidl,&lpszCurrentPath)
AppelDLL32("KERNEL32","GlobalFree",pidl)

si fcopiefichier(Chemin+nomfichier,lpszCurrentPath+""+nomFichier) alors

lpszResourceFile = lpszCurrentPath+""+LaPolice
AppelDLL32("Gdi32","CreateScalableFontResourceA" , 0, &lpszResourceFile,
&LaPolice, &lpszCurrentPath)
appeldll32("Gdi32","AddFontResourceA",&LaPolice)
sendmessage(HWND_BROADCAST,WM_FONTCHANGE,0,0)
fin
fin

Coridalement

PYT



Merci beaucoup pour ce code !

Par contre je ne comprends pas l'instruction
sendmessage(HWND_BROADCAST,WM_FONTCHANGE,0,0)
D'où sortent HWND_BROADCAST et WM_FONTCHANGE ?

@+ Laurent

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Pierre-Yves TAVERNIER
Bonjour,

Merci beaucoup pour ce code !



De rien

Par contre je ne comprends pas l'instruction
sendmessage(HWND_BROADCAST,WM_FONTCHANGE,0,0)
D'où sortent HWND_BROADCAST et WM_FONTCHANGE ?



J'ai oublié de te donner les constantes !

C'est pour informer toutes les applications ouvertes que les fonts ont
changé.
WM_POWERBROADCAST 0x0218
WM_FONTCHANGE 0x001D

PYT
Avatar
Discret
Pierre-Yves TAVERNIER a pensé très fort :
Bonjour,

Merci beaucoup pour ce code !



De rien



Bah si hein !


Par contre je ne comprends pas l'instruction
sendmessage(HWND_BROADCAST,WM_FONTCHANGE,0,0)
D'où sortent HWND_BROADCAST et WM_FONTCHANGE ?



J'ai oublié de te donner les constantes !

C'est pour informer toutes les applications ouvertes que les fonts ont
changé.
WM_POWERBROADCAST 0x0218
WM_FONTCHANGE 0x001D

PYT



Ok ! Merci encore :-)

@+ Laurent

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com