2010-12-30 10 views
0

こんにちは他のアプリケーションからのボタンのフォントを取得

を使用しようとどのようにボタン

のフォントを取得する私は、マウス

下の単語を取得しようと、私の英語 ため 最初申し訳ありませんが、今、私の問題

IntPtr dc= GetDC(button1.Handle); 
IntPtr last_font = SelectObject(dc, Font.ToHfont()); 
     Font fon = Font.FromHdc(dc); 

は、それは私のフォーム

のフォントを与え、いくつかの時間は私だけのTrueType FONのエラー を与えましたtsがサポートされています。これは、TrueTypeフォント

ないch0keeの答え

にしようと、いくつかの後、私はこの

StringBuilder Buff = new StringBuilder(1024); 
IntPtr fxx = GetTextFace(dc, 1024, Buff); 

で新しい結果を得るが、バフはいつもMSDNから

+0

自分のアプリケーションのマウスポインタの下のテキストを使用するか、実行中のアプリケーションのテキストですか? –

+0

あなたは本当にフォントを手に入れたいですか、それともあなたが望むテキストですか? –

+0

私は他のアプリケーションのボタンのフォントを使用していますので、私はAPIを使用します – bebo

答えて

-1

"システム" を返す:

ただし、一般的なDCの場合、GetDCは毎回 の既定の属性をDCに割り当てます が検索されます。たとえば、 のデフォルトフォントはSystemで、 ビットマップフォントです。このため、 は、 によって返された共通DCに対処します。 ウィンドウが描画されたときに、GetDCはどのフォント、 の色、またはブラシが使用されたかを教えません。 フォントを確認するには、GetTextFaceに電話してください。

GetDC Function

Font buttonFont = button1.Font; 

のthatsすべて、これが私のマイクロソフトサンセリフのデフォルトを印刷し

MessageBox.Show(buttonFont.Name); 

混乱しないでください。

これは必要なのですか?

+2

私はOPが別のアプリケーションのウィンドウ。 – Jacob

+0

私は他のアプリケーションのボタンのフォントを使用したいので、私はAPIを使用して、私はbutton1.Handleを使用してテストを終了した後、マウスとキーボードをフックしてマウスの位置を取得します – bebo

+0

大丈夫、 。 GetTextFaceは少なくともmsdnの意見でフォント名を返すべきです – ch0kee

0

ボタンにWM_GETFONT(0x0031)メッセージを送信する必要があります。 http://msdn.microsoft.com/en-us/library/ms632624(v=vs.85).aspxを参照してください。処理後、フォントのメッセージハンドルが返されます。

Windowsフォームはウィンドウのフォントを設定するためにWM_SETFONT(0x0030)というペアメッセージを使用しますが、これはControl.OnFontChangedメソッドのReflector.NETで確認できます。

+0

WM_GETFONT return 0 – bebo

+0

コード例を示してください – STO

+0

[DllImport( "User32.DLL")] public static extern IntPtr SendMessage( IntPtr hWnd、int Msg、int wParam、int lParam); IntPtr fx = SendMessage(button1.Handle、0x31、0、0); – bebo

関連する問題