基线 SVN r240
SVN-Revision: r240
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace Lskj.Util
|
||||
{
|
||||
public class FontHelper
|
||||
{
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
private static extern int WriteProfileString(string lpszSection, string lpszKeyName, string lpszString);
|
||||
[DllImport("gdi32")]
|
||||
private static extern int AddFontResource(string lpFileName);
|
||||
/// <summary>
|
||||
/// 安装字体
|
||||
/// </summary>
|
||||
/// <param name="fontFilePath">字体文件全路径</param>
|
||||
/// <returns>是否成功安装字体</returns>
|
||||
/// <exception cref="UnauthorizedAccessException">不是管理员运行程序</exception>
|
||||
/// <exception cref="Exception">字体安装失败</exception>
|
||||
public static bool InstallFont(string fontFilePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
|
||||
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
|
||||
//判断当前登录用户是否为管理员
|
||||
if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//获取Windows字体文件夹路径
|
||||
string fontPath = Path.Combine(System.Environment.GetEnvironmentVariable("WINDIR"), "fonts", Path.GetFileName(fontFilePath));
|
||||
//检测系统是否已安装该字体
|
||||
if (!File.Exists(fontPath))
|
||||
{
|
||||
// File.Copy(System.Windows.Forms.Application.StartupPath + "\\font\\" + FontFileName, FontPath); //font是程序目录下放字体的文件夹
|
||||
//将某路径下的字体拷贝到系统字体文件夹下
|
||||
File.Copy(fontFilePath, fontPath); //font是程序目录下放字体的文件夹
|
||||
AddFontResource(fontPath);
|
||||
|
||||
//Res = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
|
||||
//WIN7下编译会出错,不清楚什么问题。注释就行了。
|
||||
//安装字体
|
||||
WriteProfileString("fonts", Path.GetFileNameWithoutExtension(fontFilePath) + "(TrueType)", Path.GetFileName(fontFilePath));
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user