Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2289 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Problème de transtypage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de transtypage

n°2240196
HERIBERT
Posté le 13-10-2014 à 18:09:57  profilanswer
 

Bonjour à tous :)
 
Un source très utile  -trouvé sur le Net- et qui ne passe pas chez moi :  

Code :
  1. // -> http://msdn.microsoft.com/library/ms534231
  2. // Copie le fichier de police dans le répertoire Fonts de Windows
  3. CopyFile('Police.ttf', Pchar(RepertoiresSpeciaux(CSIDL_FONTS) + '\Police.ttf'), False);
  4. // Ajoute la police à la liste des polices de Windows
  5. AddFontResource(Pchar(RepertoiresSpeciaux(CSIDL_FONTS) + '\Widgets.ttf'));
  6. // Envoi un message à tous les programmes ouverts pour leur annoncer
  7. // qu'une police à été ajoutée
  8. SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);


 
Mais voilà... Les variables d'environnement en "CSIDL" ne sont plus valides. GetEnvironmentVariable() et GetKnownFolderPath() . Or, je ne connais pas cette foutue variable d'environnement pour les fontes ! Je ne peux donc pas l'initialiser. :/  
 
J'ai donc tenté ceci :  
 

Code :
  1. Rep_Dest := Path_System_Root + '\FONTS';   // C:\Windows\Fonts
  2.       Nom_F_Police := 'MISTRAL.TTF';
  3.       // Copie le fichier de police dans le répertoire Fonts de Windows
  4.       CopyFile( PChar(Nom_F_Police),  Pchar(Rep_Dest), False);
  5.       // Ajoute la police à la liste des polices de Windows
  6.       AddFontResource(Pchar(Rep_Dest) + '\' + AnsiChar(Nom_F_Police) );  // Paf ! Transtypage incorrect !
  7.       // Envoi un message à tous les programmes ouverts pour leur annoncer qu'une police à été ajoutée
  8.       SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);


 
Comment tyranstyper correctement, dans ce cas-là ?  
 
Merci.


Message édité par HERIBERT le 13-10-2014 à 18:10:44
mood
Publicité
Posté le 13-10-2014 à 18:09:57  profilanswer
 

n°2240563
jcb84
Posté le 17-10-2014 à 11:13:19  profilanswer
 

CSIDL_FONTS est définie dans l'unité shlobj..
 

Code :
  1. //ShlObj
  2.   CSIDL_DESKTOP                 = $0000;
  3.   CSIDL_INTERNET                = $0001;
  4.   CSIDL_PROGRAMS                = $0002;
  5.   CSIDL_CONTROLS                = $0003;
  6.   CSIDL_PRINTERS                = $0004;
  7.   CSIDL_PERSONAL                = $0005;
  8.   CSIDL_FAVORITES               = $0006;
  9.   CSIDL_STARTUP                 = $0007;
  10.   CSIDL_RECENT                  = $0008;
  11.   CSIDL_SENDTO                  = $0009;
  12.   CSIDL_BITBUCKET               = $000a;
  13.   CSIDL_STARTMENU               = $000b;
  14.   CSIDL_DESKTOPDIRECTORY        = $0010;
  15.   CSIDL_DRIVES                  = $0011;
  16.   CSIDL_NETWORK                 = $0012;
  17.   CSIDL_NETHOOD                 = $0013;
  18.   CSIDL_FONTS                   = $0014;
  19.   CSIDL_TEMPLATES               = $0015;
  20.   CSIDL_COMMON_STARTMENU        = $0016;
  21.   CSIDL_COMMON_PROGRAMS         = $0017;
  22.   CSIDL_COMMON_STARTUP          = $0018;
  23.   CSIDL_COMMON_DESKTOPDIRECTORY = $0019;
  24.   CSIDL_APPDATA                 = $001a;
  25.   CSIDL_PRINTHOOD               = $001b;
  26.   CSIDL_ALTSTARTUP              = $001d;
  27.   CSIDL_COMMON_ALTSTARTUP       = $001e;
  28.   CSIDL_COMMON_FAVORITES        = $001f;
  29.   CSIDL_INTERNET_CACHE          = $0020;
  30.   CSIDL_COOKIES                 = $0021;
  31.   CSIDL_HISTORY                 = $0022;
  32. // a ajouter
  33.   CSIDL_COMMON_APPDATA          = $0023;
  34.   CSIDL_WINDOWS                 = $0024;
  35.   CSIDL_SYSTEM                  = $0025;
  36.   CSIDL_PROGRAM_FILES           = $0026;
  37.   CSIDL_MYPICTURES              = $0027;
  38.   CSIDL_PROFILE                 = $0028;
  39.   CSIDL_SYSTEMX86               = $0029;
  40.   CSIDL_PROGRAM_FILESX86        = $002A;
  41.   CSIDL_PROGRAM_FILES_COMMON    = $002B;
  42.   CSIDL_PROGRAM_FILES_COMMONX86 = $002C;
  43.   CSIDL_COMMON_TEMPLATES        = $002D;
  44.   CSIDL_COMMON_DOCUMENTS        = $002E;
  45.   CSIDL_COMMON_ADMINTOOLS       = $002F;
  46.   CSIDL_ADMINTOOLS              = $0030;
  47.   CSIDL_FLAG_CREATE             = $8000;
  48.   CSIDL_FLAG_DONT_VERIFY        = $4000;
  49.   CSIDL_FLAG_MASK               = $FF00;

n°2240571
HERIBERT
Posté le 17-10-2014 à 12:31:43  profilanswer
 

Ah.. OK, merci ;) Toujours utile à  savoir !  
 
Alors pour le code que j'ai posté, ne pas en tenir compte : aucun besoin de transtypage. J'étais un peu fatigué :D
 

Code :
  1. {
  2.       Rep_Dest, Nom_Court_F_Police, Nom_Cplt_F_Police sont des string
  3. }
  4.       Rep_Dest := Path_System_Root + '\FONTS';   // C:\Windows\Fonts
  5.       Nom_Court_F_Police := ExtractFileName(Nom_F);
  6.       Nom_Cplt_F_Police := Rep_Dest + '\' + Nom_Court_F_Police;
  7.       // Copie le fichier de police dans le répertoire Fonts de Windows
  8.       CopyFile( PChar(Nom_Court_F_Police),  PChar(Nom_Cplt_F_Police), False);
  9.       // Ajoute la police à la liste des polices de Windows
  10.       Retour := AddFontResource(Pchar(Nom_Cplt_F_Police));


Message édité par gilou le 17-10-2014 à 14:12:09

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Problème de transtypage

 

Sujets relatifs
problème avec jquery et fonction load()probleme de lancement du script
Problème d'interruption externe sur PIC18Problème pour insérer des données sur MySQL
Création d'un thème basique sous WordPress : problème CSSProblème affichage balises sous IE
Probleme Avec un effet de slideProblème Bash: permission denied
Problème insoluble de transtypage[JAVA]probleme de transtypage de Object vers autre chose
Plus de sujets relatifs à : Problème de transtypage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR