IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage Delphi Discussion :

Comment installer une police sous Vista ?


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 85
    Points
    85
    Par défaut Comment installer une police sous Vista ?
    salut a tous.

    je n'arrive pas a installer une font (police de caratere) sous windows VISTA.
    en faite, impossible de copier une police dans le repertoire fonts de windows vista.

    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
     
    var : s = string;
     
    //je recupere le repertoire fonts, ca marche nikel
    function FontsFolder(Folder: Integer): String;
    var
      SFolder : pItemIDList;
      SpecialPath : Array[0..MAX_PATH] Of Char;
    begin
      SHGetSpecialFolderLocation(MegaFonts3.Handle, Folder, SFolder);
      SHGetPathFromIDList(SFolder, SpecialPath);
      Result := StrPas(SpecialPath);
    end;
     
    s := FontsFolder(CSIDL_FONTS);
     
    //ca bloque ici, il ne se passe rien
    Ressources := TResourceStream.Create(hinstance, 'P1', 'POLICE'); 
    Ressources.SaveToFile(s+'\'+'mapolice.ttf'); 
    Ressources.Free;
    j'ai meme essayer d'extraire la fopnt dans le repertoire temp puis de la copier du temp au repertoire fonts mais rien ne marche.

    j'ai aussi essayer de creer une cle dans le registre en 1er mais ca marche pas nonplus.... (poutant sous 98/2000/xp ca roule).




    je n'arrive pas aussi a faire fonctionner se code qui marche sous 2000 et xp sans pb :
    (c'est pour utiliser une font depuis une ressource) :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    type
      TfrmMain = class(TForm)
        memTest: TMemo;
        stbStatus: TStatusBar;
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      frmMain: TfrmMain;
      FontBuffer: PChar;
      hFontFraktur: THandle;
      ResSize: Integer;
     
    implementation
     
    {$R *.dfm}
    {$R WaltDisneyFont.res}
     
    procedure TfrmMain.FormCreate(Sender: TObject);
    var
      Res : TResourceStream;
      ResFontCount: DWord;
    begin
      Res := TResourceStream.Create(hInstance, 'WaltDisney', 'RT_FONT');
      try
        ResSize := Res.Size + 1;
        FontBuffer  := AllocMem(ResSize);
        Res.Read(FontBuffer^, ResSize);
      finally
        Res.Free;
      end;
      ResFontCount := 1;
      hFontFraktur := AddFontMemResourceEx(FontBuffer, ResSize, nil, @ResFontCount);
      memTest.Font.Name := 'Walt Disney Script v4.1';
      memTest.Font.Size := 42;
    end;
     
    procedure TfrmMain.FormDestroy(Sender: TObject);
    begin
      FreeMem(FontBuffer, ResSize);
      RemoveFontMemResourceEx(hFontFraktur);
    end;
     
    end.

    merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 85
    Points
    85
    Par défaut
    bon j'ai reussi a installer ma police sous vista, faut creer la cle de registre en 1er sinon on peut rien copier dans le dossier fonts.


    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
     
    var
      reg: TRegistry;
      Res : TResourceStream;
    begin
     
      reg := TRegistry.Create;
      reg.RootKey := HKEY_LOCAL_MACHINE;
      reg.LazyWrite := false;
      reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts',false);
      reg.WriteString('WBXscar (TrueType)','WBXscar.ttf');
      reg.CloseKey;
      reg.free;
     
    Res := TResourceStream.Create(hinstance, 'P1', 'POLICE'); 
    Res.SaveToFile('C:\Windows\Fonts\WBXscar.ttf'); 
    Res.Free;
     
     
      AddFontResource(Pchar('C:\Windows\Fonts\WBXscar.ttf'));
      SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
     
      RemoveFontResource(PChar('C:\Windows\Fonts\WBXscar.ttf'));
      SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
     
    end;
    par contre ma police n'est pas directement utilisable, faut que je reboot un coup pour l'utiliser, je comprend pas ce qui cloche..

    J'ai un vieux prog qui s'appel 'the font thing' qui install n'importe qu'elle font sous vista sans probleme, je fait exactement la meme chose que lui mais moi ca bug : extrait de la faq

    Q: What happens when I Install or Uninstall a font?

    A: When you Install a font:

    1 The font file is copied into your Windows Fonts folder. This is usually something like C:\Windows\Fonts, but can vary.
    2 A reference to the font copied to the Windows Fonts folder is added to the installed fonts list in the Windows Registry.
    3 A Windows function is called to add the font to the Windows font table, which makes it available to all applications.
    4 A message is broadcast notifying applications of the change to the Windows font table.

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 719
    Points : 15 105
    Points
    15 105
    Par défaut
    Yep !
    par contre ma police n'est pas directement utilisable, faut que je reboot un coup pour l'utiliser, je comprend pas ce qui cloche..
    Ben tu fais un Add suivi d'un Remove, ceci explique sans doute cela...

    Mes 2 cts,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 063
    Points : 420
    Points
    420
    Par défaut
    Coucou,

    Bon, ca fait un an, tu ne doit plus avoir ce soucis, mais pour les autres:

    http://www.developpez.net/forums/d63...e/#post3715382

    David.

Discussions similaires

  1. Comment installer une police non standard sur un site internet ?
    Par Dsphinx dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 17/08/2010, 14h09
  2. Comment installer un thème sous Vista
    Par razily dans le forum Windows Vista
    Réponses: 0
    Dernier message: 19/03/2010, 01h47
  3. Comment installer une imprimante sous Debian ?
    Par débutant11 dans le forum Debian
    Réponses: 3
    Dernier message: 02/09/2009, 00h24
  4. Comment installer un service sous vista
    Par aladin95 dans le forum Windows Vista
    Réponses: 1
    Dernier message: 19/06/2009, 13h01

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