Des développeurs constamment à l'étude des nouvelles infections.
-> Notre équipe de développeurs: Voir les membres.
  • Avatar du membre
  • Avatar du membre
  • Avatar du membre
#7719
_Fonts.au3 : Gestion polices de caractères



Késako ? : Cette UDF permet de gérer les polices de caractères.


Fonctions : Elles sont au nombre de trois.
  • _GetFontList() ....... : Récupère dans un tableau les polices de caractère installées.
  • _IsFontInstalled() .... : Permet de vérifier si une police est installée ou pas.
  • _InstallFonts() ....... : Permet d'installer une police de caractère.

Code
Code: Tout sélectionner
[code]
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once
#include "DeclareW32_W64.au3"
;#include <Array.au3>
#include <WindowsConstants.au3>
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
#region Header
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
#cs
Title ............. : Fonts UDF Library for AutoIt3
FileName .......... : _Fonts.au3
Description ....... : Collection of functions for managing Windows fonts in AutoIT
Author ............ : TopXm (dit Rocco ... )°||°)
Version ........... : V 1.0 O
Last Update ....... : 25/06/2012
Requirements ...... : AutoIt3 3.3.8.1 or higher

Changelog ......... :

~~~~~~ 25/06/2012 ~~~~~~ v. 1.0

Created function ==> _InstallFonts(FontResourceFileName)
Created function ==> _GetFontList()
Created function ==> _IsFontInstalled(FontName)

#ce
#endregion Header

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
#region Global Variables and Constants
Global Const $HWND_BROADCAST = 0xFFFF
;Global Const $WM_FONTCHANGE = 0x1D

; ->Registry Enum. Fonts Name & ResourceFileName
Global Const $FontRegKey = $HKLM & '\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts'

; ->Windows Directory Enum. Fonts ResourceFileName
Global Const $WinFontsDir = @WindowsDir & '\fonts\'

; ->Getting Default FontName
Global $FontDefault = _WinAPI_GetFontResourceInfo(RegRead($FontRegKey, ''), 1)
#endregion Global Variables and Constants

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
#region example and or samples
; -------------------> Getting all FontName and FontRessoureName <----------------------
Global $FontList = _GetFontList()
;
;_ArrayDisplay($FontList)
; -------------------> Install Font 'Cursif' from MyTool.exe <----------------------
; FileInstall('C:\Users\TopXm\Desktop\Dev\TopReg\policies\Cursif.ttf', $TEMPFONT & 'Cursif.ttf', 1)
; _InstallFonts('Cursif.ttf')
; _InstallFonts('Curs*.ttf')
#endregion example and or samples

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
#region Core functions

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
; _InstallFonts() : Install and register font in Windows directory
; Input Parm : Font ressource fullpathname (Ex : 'C:\Bob\Leponge\Cursif.ttf')
; Output parm : If OK return True else Set @Error
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
Func _InstallFonts($FontFileName)
Local $sFontDescript = ""
Local $sFontName = StringRegExpReplace($FontFileName, "^.*\\", "")
If Not FileCopy($FontFileName,$WinFontsDir & $sFontName, 1) Then Return SetError(1, 0, 0)

Local $iFontWildcard = StringRegExp($sFontName, "\*|\?")
Local $hGdi32_DllOpen = DllOpen("gdi32.dll")
If $hGdi32_DllOpen = -1 Then Return SetError(2, 0, 0)

Local $hSearch = FileFindFirstFile($FontFileName)
If $hSearch = -1 Then Return SetError(3, 0, 0)

Local $aRet
While 1
$sFontName = FileFindNextFile($hSearch)
If @error Then ExitLoop

If $iFontWildcard Then $sFontDescript = StringRegExpReplace($sFontName, "\.[^\.]*$", "")

$aRet = DllCall($hGdi32_DllOpen, "Int", "AddFontResource", "str",$WinFontsDir & $sFontName)
If IsArray($aRet) And $aRet[0] > 0 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts", _
$sFontDescript, "REG_SZ", $sFontName)
EndIf
WEnd
DllClose($hGdi32_DllOpen)
DllCall("user32.dll", "Int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_FONTCHANGE, "int", 0, "int", 0)
Return 1
EndFunc ;==>_InstallFonts

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
; _GetFontList() : Getting all Windows fonts installed
; Input Parm : nothing
; Output Parm : Array 1-based 2 dim. Usual Fontname & ResourceFileName
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
Func _GetFontList()
Local $iK = 0, $iName, $iData
Local $iFonts[1][2] = [[0]]
While 1
$iK += 1
$iName = RegEnumVal($FontRegKey, $iK)
If @error Then ExitLoop
$iData = RegRead($FontRegKey, $iName)
If FileExists($WinFontsDir & $iData) Then
$iFonts[0][0] += 1
ReDim $iFonts[$iFonts[0][0] + 1][2]
$iFonts[$iFonts[0][0]][0] = $iData
$iFonts[$iFonts[0][0]][1] = _WinAPI_GetFontResourceInfo($iData, 1)
EndIf
WEnd
Return $iFonts
EndFunc ;==>_GetFontList
#endregion Core functions

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
; _IsFontInstalled : Test if Font installed
; Input Parm : $FontName / Font filename
; : $IsName (Default true) Define if $FontName = FontName or FontFileName
; Output Parm : Return True if exist and installed, False if not and return @Error = 1
; NB : No need Array.au3
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
Func _IsFontInstalled($FontName, $IsName = True)
Local $iK = 0, $iL = 1
If Not $IsName Then $iL = 0
For $iK = 1 To $FontList[0][0]
If $FontName = $FontList[$iK][$iL] Then
Return True
EndIf
Next
Return SetError(1, 0, False)
EndFunc

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
; ;
; INTERNAL FUNCTIONS ;
; ;
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;
Func _WinAPI_GetFontResourceInfo($sFont, $fForce = 0)

If $fForce Then
If Not _WinAPI_AddFontResourceEx($sFont, 0x20) Then
Return SetError(1, 0, '')
EndIf
EndIf

Local $Ret = DllCall('gdi32.dll', 'int', 'GetFontResourceInfoW', 'wstr', $sFont, 'dword*', 4096, 'wstr', '', 'dword', 0x01)

If (@error) Or (Not $Ret[0]) Then
$Ret = 0
EndIf
If $fForce Then
_WinAPI_RemoveFontResourceEx($sFont, 0x20)
EndIf
If Not IsArray($Ret) Then
Return SetError(1, 0, '')
EndIf
Return $Ret[3]
EndFunc ;==>_WinAPI_GetFontResourceInfo

Func _WinAPI_AddFontResourceEx($sFont, $iFlag = 0, $fNotify = 0)

Local $Ret = DllCall('gdi32.dll', 'int', 'AddFontResourceExW', 'wstr', $sFont, 'dword', $iFlag, 'ptr', 0)

If (@error) Or (Not $Ret[0]) Then
Return SetError(1, 0, 0)
EndIf
If $fNotify Then
DllCall('user32.dll', 'none', 'SendMessage', 'hwnd', 0xFFFF, 'uint', 0x001D, 'wparam', 0, 'lparam', 0)
EndIf
Return $Ret[0]
EndFunc ;==>_WinAPI_AddFontResourceEx


Func _WinAPI_RemoveFontResourceEx($sFont, $iFlag = 0, $fNotify = 0)

Local $Ret = DllCall('gdi32.dll', 'int', 'RemoveFontResourceExW', 'wstr', $sFont, 'dword', $iFlag, 'ptr', 0)

If (@error) Or (Not $Ret[0]) Then
Return SetError(1, 0, 0)
EndIf
If $fNotify Then
DllCall('user32.dll', 'none', 'SendMessage', 'hwnd', 0xFFFF, 'uint', 0x001D, 'wparam', 0, 'lparam', 0)
EndIf
Return 1
EndFunc ;==>_WinAPI_RemoveFontResourceEx



[/code]

Bonsoir Réinitialisez les navigateurs =>[…]

Bonjour, Pour un premier diagnostic: https:/[…]

ok dans ce cas je mets resolu et je ferme bonne su[…]

pc tres lent

salut pris en charge ici https://www.nicolascool[…]