gpt4 book ai didi

c# - 无法安装字体

转载 作者:可可西里 更新时间:2023-11-01 11:54:24 26 4
gpt4 key购买 nike

当我尝试在 VS2012 中运行以下代码段时,它会按预期安装字体。但是,当我从 Windows 资源管理器启动应用程序时,它返回以下错误:“无法安装所需的字体:系统找不到指定的文件”

    class Program
{
[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);
static void Main(string[] args)
{
string spath = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\lucon.ttf";
int result = AddFontResource(spath);
int error = Marshal.GetLastWin32Error();
if (error != 0)
{
Console.WriteLine("Unable to install needed font: "+ new Win32Exception(error).Message);
Console.ReadKey();
}
else
{
Console.WriteLine((result == 0) ? "Font is already installed." : "Font installed successfully.");
}
}
}

lucon.ttf 位于正确的文件夹中。当控制台应用程序从 Windows 资源管理器启动时,有人可以解释一下并帮助我让它运行吗?

最佳答案

您的错误处理被破坏了。当函数没有失败时,Windows 通常不会重置最后一个错误。此外,AddFontResource() 的特殊之处在于它 根本不设置最后一个错误,请查看 MSDN 文章。 GDI 函数的其他常见行为。所以你必须这样做:

    int result = AddFontResource(spath);
if (result == 0) {
Console.WriteLine("Unable to install needed font");
Console.ReadKey();
}

不妨修复 pinvoke 声明:

   [DllImport("gdi32.dll", CharSet = CharSet.Auto)]
public static extern int AddFontResource(string lpFileName);

关于c# - 无法安装字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20954037/

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