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

你可能感兴趣的:(.net,exception,String,C#,ttf,fonts)