gpt4 book ai didi

即使在 Windows 重新启动后,C# AddFontResource 也无法正常工作

转载 作者:行者123 更新时间:2023-11-30 14:34:42 34 4
gpt4 key购买 nike

我正在尝试使用以下代码使用 C# 代码安装字体。

调用 InstallFont 不会抛出任何异常并返回 1。我认为这表明它已经安装了字体。但是,无论是在 Windows 字体文件夹中还是在检查 InstalledFontCollection 时,该字体都没有出现在已安装字体列表中,它也没有显示在我的软件中。我试过安装后重启电脑,还是不行。

如果我通过在 Windows 资源管理器中双击并单击“安装字体”来手动安装文件,则安装没有问题。

我在 Windows 7 64 位操作系统上使用 C#、Visual Studio 2010、Microsoft .NET Framework 4.0。

如有任何帮助,我们将不胜感激。

非常感谢,保罗

list 文件包括:

requestedExecutionLevel level="requireAdministrator" uiAccess="false"

申请代码:

[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)] string lpFileName);

public static int InstallFont()
{
InstalledFontCollection ifc = new InstalledFontCollection();

if (ifc.Families.Any(item => item.Name == "Arial Narrow"))
return 100; // Font already installed

string filename = @"C:\Users\username\Downloads\ARIALN.TTF";

const int WM_FONTCHANGE = 0x001D;
const int HWND_BROADCAST = 0xffff;

int added = AddFontResource(filename);
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);

return added;
}

最佳答案

请务必查看有关 AddFontResource() 的 MSDN 库文章:

This function installs the font only for the current session. When the system restarts, the font will not be present. To have the font installed even after restarting the system, the font must be listed in the registry.

InstalledFontCollection 类仅枚举实际安装的字体并忽略临时字体。编写注册表项并将文件复制到 c:\windows\fonts 是安装程序的职责。除了通过控制面板小程序,Microsoft 没有记录如何执行此操作。如果你想尝试一下,注册表项是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

关于即使在 Windows 重新启动后,C# AddFontResource 也无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528479/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com