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.
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.
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 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
Partager