2016-11-23 110 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