如何获取系统当前fonts目录下的字体列表
如题如何获取系统当前fonts目录下的字体列表
百度搜索了半天也没找到相关例子
还烦各位老师指点下 第一种 读注册表
$sFonts2=""
For $i=1 to 9999999
$sFonts=RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts",$i)
IF @error <> 0 Then ExitLoop
$sFonts2&=$sFonts
Next
$sFiltered=StringRegExpReplace($sFonts2,"((TrueType)|(Alle Aufl?sungen)|(VGA-Aufl?sung))","")
$sFiltered=StringRegExpReplace($sFiltered,"[\(\)]",",")
$sFiltered=StringReplace($sFiltered," ,,",",")
MsgBox(0,"",$sFiltered) 第二种 调用GDI32.DLL获取字体列表#include <Array.au3>
Global $aFonts
_GetSystemFonts()
_ArrayDisplay($aFonts)
Func _GetSystemFonts()
Local Const $LOGFONT = "long lfHeight;long lfWidth;long lfEscapement;long lfOrientation;long lfWeight;byte lfItalic;byte lfUnderline; byte lfStrikeout;byte lfCharSet;byte lfOutPrecision;byte lfClipPrecision;byte lfQuality;byte lfPitchAndFamily;char lfFaceName"
Local $hGDI32 = DllOpen("Gdi32.dll"), $hUser32 = DllOpen("user32.dll")
Local $hDesktop, $hDC, $iReturn
Local $hCBFunc = DllCallbackRegister("EnumFontFamExProc", "long", "ptr;ptr;dword;lparam")
Local $strctLOGFONT = DllStructCreate($LOGFONT)
DllStructSetData($strctLOGFONT, "lfCharset", 1)
$hDesktop = DllCall($hUser32, "hwnd", "GetDesktopWindow")
$hDC = DllCall($hUser32, "ptr", "GetWindowDC", "hwnd", $hDesktop)
DllCall($hGDI32, "long", "EnumFontFamiliesEx", "ptr", $hDC, "ptr", DllStructGetPtr($strctLOGFONT), "ptr", DllCallbackGetPtr($hCBFunc), "lparam", 10, "DWORD", 0)
$aFonts = _ArrayUnique($aFonts, 1, 1)
_ArraySort($aFonts, 0,1)
DllCall($hUser32, "int", "ReleaseCapture")
DllCallbackFree($hCBFunc)
DllClose($hGDI32)
DllClose($hUser32)
EndFunc ;==>_GetSystemFonts
Func EnumFontFamExProc($pLOGFONT, $TEXTMETRIC, $dwType, $lpData)
Local Const $LOGFONT = "long lfHeight;long lfWidth;long lfEscapement;long lfOrientation;long lfWeight;byte lfItalic;byte lfUnderline; byte lfStrikeout;byte lfCharSet;byte lfOutPrecision;byte lfClipPrecision;byte lfQuality;byte lfPitchAndFamily;char lfFaceName"
ReDim $aFonts
$aFonts = DllStructGetData(DllStructCreate($LOGFONT, $pLOGFONT), "lfFaceName")
Return 1
EndFunc ;==>EnumFontFamExProc 回复 2# my788522
谢谢.....谢谢回复指点 回复 2# my788522
顺便问下像这样的 应该如何实现呢
你这个就更简单了 就是个遍历win目录下的fonts目录而已 看如下代码$search = FileFindFirstFile(@WindowsDir&"\fonts\*.TTF")
While 1
$file = FileFindNextFile($search)
If @error Then ExitLoop
$size=Round(FileGetSize(@WindowsDir&"\fonts\"&$file)/1024)
MsgBox(0,"",$file&@CR&$size )
WEnd 回复 5# my788522
再次谢谢 my788522老师
唉 高手指点就是感觉不一样所有问题突然感觉也简单了
还想继续问下 系统 有三种格式的字体那么...
还有怎么将获取到的字体赋值到GUI上的复选框上 ? 这个是怎么排列的 ?
还有字体卸载是怎么卸载的 ???
我看着他这个工具挺强大的想把它搞明白
如果老师有时间的话麻烦继续指点下 谢谢了 楼主是不是根本就没自己动手的意思 我表示鸭梨很大 楼主需要的可能是从基础开始的东西 本帖最后由 netegg 于 2011-9-30 07:52 编辑
_ChooseFont?
页:
[1]