2016-11-23 51 views
1

我正在尝试在一堆服务器上安装字体。我已经能够使用脚本来复制字体并将它们“安装”到服务器上,但我需要能够访问字体而不需要必须关闭服务器或注销帐户。Python版本的AddFontResource()

我发现Windows AddFontResource()这是使用C++完成的,但在Python或Powershell中是否存在等效函数?

(我一直在使用Python和PowerShell做检查和安装。)

回答

3

您是否尝试过使用win32api库?它具有SendMessage()功能,可与windll.gdi32.AddFontResource()结合使用在​​

例如安装TTF字体文件:

import win32api 
import ctypes 
import win32con 


ctypes.windll.gdi32.AddFontResourceA("C:\\Path\\To\\Font\\font.ttf") 
win32api.SendMessage(win32con.HWND_BROADCAST, win32con.WM_FONTCHANGE) 
+2

请避免遗留[A] NSI API。您不必要地限制路径,它应该能够包含任何Unicode字符,并且在Python 3中编写的代码不起作用。使用'gdi32 = ctypes.WinDLL('gdi32');''gdi32.AddFontResourceW。 argtypes =(ctypes.c_wchar_p,);''gdi32.AddFontResourceW(r“C:\ Path \ To \ Font \ font.ttf”)''。我定义了'argtypes'来允许Python 2中的ctypes使用''mbcs''编解码器自动转换字节串路径。对于完整的字符范围,使用“u”“'文字。 – eryksun