2009/06/07

C#フォントフォルダを取得する

このエントリーをはてなブックマークに追加
特殊フォルダを拾ってく方法としてEnvironment.GetFolderPathが用意されていて、Environment.SpecialFolder列挙型を指定するやり方がありますが、列挙のなかに何故だかフォントフォルダが零れ落ちているので利用できません。
ありがちなのは、Systemフォルダを拾ってきて+"Fonts"とかしちゃうのですけれど、真面目にAPIを読んで自力で取ってくるのが一番安全かと。



[System.Runtime.InteropServices.DllImport("shell32.dll")]
public static extern Int32 SHGetFolderPath(
IntPtr hwndOwner,
Int32 nFolder,
IntPtr hToken,
UInt32 dwFlags,
System.Text.StringBuilder pszPath);

private const Int32 CSIDL_FONTS = 0x0014;
private const UInt32 SHGFP_TYPE_CURRENT = 0x0000;

public static string GetFontsFolderPath() {
StringBuilder builder = new StringBuilder();
SHGetFolderPath(IntPtr.Zero, CSIDL_FONTS, IntPtr.Zero, SHGFP_TYPE_CURRENT, builder);

return builder.ToString();
}

0 件のコメント :

コメントを投稿