1
我試圖以編程方式在Win7 64位C#上安裝True-Type字體。C#AddFontResource不起作用 - 返回僅在1字體上調用時安裝的2種字體
由於某些原因,當我調用AddFontResource時,字體未正確安裝,即使我只添加一種字體,我也會返回「2」。
如果我只需雙擊它並使用常規的Windows字體安裝界面進行安裝,則字體安裝正確,因此我知道它是適當的字體。如果我在無效路徑上調用AddFontResource,那麼在沒有安裝字體的情況下,我得到0的正確返回值,所以它看起來像在做「某事」並找到字體文件,但無論它在做什麼,它都不起作用。
下面是我使用的代碼:
[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("gdi32")]
public static extern int AddFontResource(string lpFileName);
public static void InstallFonts()
{
const int WM_FONTCHANGE = 0x001D;
const int HWND_BROADCAST = 0xffff;
int Ret = AddFontResource(@"C:\FontFile.ttf");
int Res = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
}
字體 「FontFile.ttf」 明顯存在。正如我所提到的,AddFontResource返回2,這是沒有意義的,並且SendMessage返回1,因此它發送正確。
任何想法可能會出錯?
謝謝!