C# .net 添加及删除字体文件(ttf)

public class InstallFont { [DllImport("kernel32.dll", SetLastError = true)] static extern int WriteProfileString(string lpszSection, string lpszKeyName, string lpszString); [DllImport("user32.dll")] public static extern int SendMessage(int hWnd, // handle to destination window uint Msg, // message int wParam, // first message parameter int lParam // second message parameter ); [DllImport("gdi32")] public static extern int AddFontResource(string lpFileName); [DllImport("gdi32")] public static extern int RemoveFontResource(string lpFileName); /// <summary> /// 安装字体 /// </summary> /// <param name="orginFontPath">原始字体文件所在路径</param> public static int installFont(string orginFontPath) { string WinFontDir = "C://windows//fonts"; string FontFileName = "my font.TTF"; string FontName = "my font"; int Ret=0; int Res; string FontPath; const int WM_FONTCHANGE = 0x001D; const int HWND_BROADCAST = 0xffff; FontPath = WinFontDir + "//" + FontFileName; if (File.Exists(FontPath))//若已存在则先删除之 { try { removeFont(FontPath); } catch (Exception) { //throw; } } if (!File.Exists(FontPath)) { File.Copy(orginFontPath + "//" + FontFileName, FontPath); Ret = AddFontResource(FontPath); Res = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); //Ret = WriteProfileString("fonts", FontName + "(TrueType)", FontFileName); } return Ret; } public static int removeFont(string FontFilePathName) { RemoveFontResource(FontFilePathName); try { File.Delete(FontFilePathName); } catch (Exception) { return 0; } return 1; } }

若只使用AddFontResource函数,则重启机器后字体文件消失,此方法字体在机器重启后仍有效

删除字体功能,需要删除Fonts文件夹下的文件才有效

参考:http://blog.csdn.net/vcleaner/archive/2005/07/27/436079.aspx

<script type="text/javascript"><!-- google_ad_client = "pub-7232158790402205"; /* 468x60, 创建于 10-1-10 */ google_ad_slot = "2831231878"; google_ad_width = 468; google_ad_height = 60; // --></script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值