我正在尝试在 Win7 64 位上以编程方式在 C# 中安装 True-Type 字体。
出于某种原因,当我调用 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,因此它可以正确发送。
有什么想法可能会出错吗?
谢谢!