Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2005
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : novembre 2005
    Messages : 598
    Points : 206
    Points
    206

    Par défaut Installation police de caractères

    Bonjour à tous,

    J'essaye en vain d'installer des polices sous Windows 7 et 8 avec un bout de code que j'ai trouvé.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    lpFileName1 	est une chaîne ASCIIZ sur 255 =  "Blenda Script.otf"
    DirectoryFonts 	est chaîne=SysRep(srFontes)
    nHWnd 			est un entier=Handle()
    retval 			est un entier
    nHWND_BROADCAST est un entier=65535 //&HFFFF en hexadécimal
     
    nIdFic1 est un entier= fOuvre(DirectoryFonts+"\"+lpFileName1,foLecture)
    SI nIdFic1=-1 ALORS
    	SI PAS fFichierExiste(DirectoryFonts+"\"+lpFileName1) ALORS
    		SI fCopieFichier(fRepExe()+"\fonts\"+lpFileName1,DirectoryFonts+"\"+lpFileName1) ALORS
    			retval=AppelDLL32("gdi32","AddFontResourceA",&lpFileName1)
    			SI retval<>0 ALORS
    				SendMessage ( nHWND_BROADCAST , nHWnd , 0 , 0 )
    			FIN
    		FIN
    	FIN
    FIN
    Si quelqu'un a une idée elle est la bienvenue.

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2009
    Messages : 1 278
    Points : 2 146
    Points
    2 146

    Par défaut

    J'utilise la même API et je n'envoie pas de handle en paramètre mais une constante Windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WM_FONTCHANGE est un entier = 0x001D 
    SendMessage ( HWND_BROADCAST , WM_FONTCHANGE , 0 , 0 )
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2004
    Messages
    2 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2004
    Messages : 2 000
    Points : 3 241
    Points
    3 241

    Par défaut

    Bonjour à tous,

    Je sais que la discussion commence à dater mais voici ma petite contribution grâce à la grande aide de mes compères ci-dessus

    Donc pour ma part, la problématique que je rencontre est que les sessions Windows ne sont pas forcément administrateur et donc l'accès au dossier Font n'est pas accessible en écriture.
    Donc la fonction AddFontResourceA permet de monter en mémoire les font sans les installer. Elles sont ensuite décharger à la prochaine ouverture de session.
    J'ai donc tout simplement enlevé toutes les parties testant la présence ou l'ouverture du fichier à tester.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    lpFileName1 	est une chaîne ASCIIZ sur 255 =  "Blenda Script.otf"
    retval 			est un entier
    nHWND_BROADCAST est un entier=65535 //&HFFFF en hexadécimal
     
    retval=AppelDLL32("gdi32","AddFontResourceA",&lpFileName1)
    SI retval<>0 ALORS
    	SendMessage ( nHWND_BROADCAST , nHWnd , 0 , 0 )
    FIN

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2004
    Messages
    2 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2004
    Messages : 2 000
    Points : 3 241
    Points
    3 241

    Par défaut

    Bonjour à tous,

    Je rencontre quelques soucis en production pour l'utilisation du code ci-dessus.
    Sur certains postes, Windows 10, le chargement de la police bloque à la ligne 6, donc mon appli ne répond plus, et pas de message d'erreur.

    Avez-vous déjà rencontré ce problème ?

  5. #5
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    mutlitâche-multifonction
    Inscrit en
    juin 2003
    Messages
    3 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : mutlitâche-multifonction
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2003
    Messages : 3 221
    Points : 5 447
    Points
    5 447

    Par défaut

    Hello Lo²,
    2 questions à 2 balles :
    - Le type de chaîne requis est bien du ASCIIZ ?
    - La taille est de 255, mais ta chaîne fait beaucoup moins. Besoin de la réduire ?
    Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
    Pas de question par MP s'il vous plait. Le forum est fait pour cela...

    Make it real not fantasy

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2004
    Messages
    2 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2004
    Messages : 2 000
    Points : 3 241
    Points
    3 241

    Par défaut

    Hello Frenchsting,

    Il ne s'agit pas de question à 2 balles
    En effet, ma chaîne fait moins et je peux donc la réduire.

    Tu penses que ça vient de là ?

  7. #7
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    mutlitâche-multifonction
    Inscrit en
    juin 2003
    Messages
    3 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : mutlitâche-multifonction
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2003
    Messages : 3 221
    Points : 5 447
    Points
    5 447

    Par défaut

    Je n'en sais rien, mais qui ne tente rien n'a rien

    Et sur le type asciiZ ?
    Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
    Pas de question par MP s'il vous plait. Le forum est fait pour cela...

    Make it real not fantasy

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2004
    Messages
    2 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2004
    Messages : 2 000
    Points : 3 241
    Points
    3 241

    Par défaut

    C'est pas faux

    Pour le type asciiz, je ne me suis pas posé de question, c'est du recopiage de code.
    Il me semble avoir vu de l'Unicode sur quelques autres exemples.

    Je vais essayer tout ça.

  9. #9
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2004
    Messages
    2 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2004
    Messages : 2 000
    Points : 3 241
    Points
    3 241

    Par défaut

    Le changement en Unicode ou la réduction de la taille de la chaîne n'ont pas donné de résultat probant

    D'autres idées ?

  10. #10
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    mutlitâche-multifonction
    Inscrit en
    juin 2003
    Messages
    3 221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : mutlitâche-multifonction
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2003
    Messages : 3 221
    Points : 5 447
    Points
    5 447

    Par défaut

    Chaine ANSI ?
    Commencez toujours par là : et puis n'hésitez à passer par là : ou par un autre moteur de recherche...
    Pas de question par MP s'il vous plait. Le forum est fait pour cela...

    Make it real not fantasy

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    janvier 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : janvier 2003
    Messages : 60
    Points : 83
    Points
    83

    Par défaut

    bonjour,

    voici comment je procède et qui fonctionne, testez et dites moi si cela solutionne votre problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    PROCEDURE installFonts(_bInstall est un booléen=Faux)
     
    lRet                                    est un entier
    szPathFont2Install                	est une chaîne
    szNameFont                              est une chaîne
    HWND_BROADCAST                         	est un entier
    //WM_FONTCHANGE                    		est un entier
    i					est un entier
     
    szNameFont = "LeNomDeMaFont.ttf"
     
    HWND_BROADCAST = 0xffff
    //WM_FONTCHANGE  = 0x001D
     
    szPathFont2Install = fRepExe()+[fSep()]+szNameFont
     
    SI fFichierExiste(szPathFont2Install)
    	TANTQUE API("gdi32.dll","RemoveFontResourceA",&szPathFont2Install)
    		i++
    		SI i > 50 ALORS SORTIR
    	FIN
     
    	SI _bInstall ALORS
    		lRet = API("gdi32.dll","AddFontResourceA",&szPathFont2Install)
    		SI lRet = 0 ALORS
    			Erreur(ErreurInfo())
    			RETOUR
    		FIN
    //		SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0)
    	FIN
    FIN
    le "RemoveFontResourceA" est là en cas de fermeture du logiciel pour décharger les fonts installées car à force de faire un "AddFontResourceA" cela fait saturé la machine
    Cordialement JeAn-PhI

  12. #12
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2004
    Messages
    2 000
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2004
    Messages : 2 000
    Points : 3 241
    Points
    3 241

    Par défaut

    Bonjour JeAn-PhI,

    Ca fontionne nickel.
    Merci encore.

Discussions similaires

  1. [WS 2008 R2] GPO - Droit d'installation police de caractères
    Par djsbens dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 12/11/2012, 16h45
  2. Proposer l'installation d'une police de caractères
    Par bakonu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/03/2009, 11h13
  3. Charger des polices de caractères (ttf) sans les installer
    Par Arkham46 dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/01/2009, 10h49
  4. installer font (police de caractère)en VB
    Par cbleas dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/11/2007, 11h58
  5. installer nouvelle police de caractère pour open office
    Par Biosox dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 01/08/2007, 00h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo