Win7 64ビット版のC#でプログラムでTrueTypeフォントをインストールしようとしています。C#AddFontResourceが機能しません - 1フォントのみで呼び出されたときに2つのフォントがインストールされます。
何らかの理由で、私がAddFontResourceを呼び出すと、フォントが正しくインストールされず、フォントを1つしか追加しなくても "2"という戻り値が得られます。
フォントをダブルクリックして通常のWindowsフォントインストールインターフェイスを使用してインストールするとフォントが正しくインストールされるため、適切なフォントであることがわかります。無効なパスでAddFontResourceを呼び出すと、フォントがインストールされていないために正しい戻り値0が返されるため、「何か」を実行してフォントファイルを検索しているように見えますが、何が行われていても動作していません。 "FontFile.ttf" 明らかに存在する
[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
[DllImport("gdi32")]
public static extern int AddFontResource(string lpFileName);
public static void InstallFonts()
{
const int WM_FONTCHANGE = 0x001D;
const int HWND_BROADCAST = 0xffff;
int Ret = AddFontResource(@"C:\FontFile.ttf");
int Res = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
}
フォント:
はここで私が使用しているコードです。私が言及したように、AddFontResourceは意味をなさない2を返し、SendMessageは1を返して正しく送信します。
何が間違っている可能性がありますか?
ありがとうございます!