2010-12-30 2 views
0

hallo erste sorry für mein Englisch ich versuche, ein Wort unter Maus zu bekommenerhalten eine Schaltfläche Schriftart aus anderen Anwendungen

jetzt mein Problem, wie die Schriftart Schaltfläche erhalten

ich versuche zu verwenden

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

aber es gab mir die Schriftart der Form

und einige Zeit gab mir Fehler nur Truetype-fon ts werden unterstützt. Dies ist nicht eine Truetype-Schriftart

nach einigem mit ch0kee Antwort versuchen

i mit diesem neuen Ergebnis zu erhalten

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

aber Buff immer wieder zurückkehren "System"

+0

Sie möchten den Text unter dem Mauszeiger für Ihre eigene Anwendung, oder ist es für jede ausgeführte Anwendung? –

+0

Möchten Sie die Schriftart wirklich erhalten, oder ist es der gewünschte Text? –

+0

ich möchte die Schriftart Schaltfläche in einer anderen Anwendung, so verwende ich api – bebo

Antwort

-1

Von MSDN:

jedoch für gemeinsame DCs, weist GetDC Standardattributen an die DC jedes Mal es wird abgerufen. Die Standardschriftart ist beispielsweise System, eine Bitmap-Schriftart. Aus diesem Grunde, der Griff auf einen gemeinsamen DC zurück von GetDC nicht sagen, welche Schriftart, Farbe oder Pinsel verwendet wurde, als das Fenster gezogen wurde. Um die Schriftart zu ermitteln, rufen Sie GetTextFace.

GetDC Function

Font buttonFont = button1.Font; 

das ist alles, versteh mich Microsoft Sans Serif standardmäßig nicht verwirrt

MessageBox.Show(buttonFont.Name); 

diese druckt.

Dies ist, was Sie brauchen?

+2

Ich denke, das OP fragt, wie man die Schriftart eines Knopfes in einem anderen Anwendungsfenster. – Jacob

+0

Ich möchte die Schriftart der Schaltfläche in anderen Anwendungen, so dass ich api benutze, ich benutze die button1.Handle nur zu testen, nachdem ich fertig bin ich haken die Maus und Tastatur, um die Mausposition – bebo

+0

in Ordnung, es war nicht klar, sorry . GetTextFace sollte den Namen der Schriftart zurückgeben, zumindest in der msdn-Meinung – ch0kee

0

Sie sollten die Nachricht WM_GETFONT (0x0031) an eine Schaltfläche senden. Siehe http://msdn.microsoft.com/en-us/library/ms632624(v=vs.85).aspx Nach der Verarbeitung dieser Nachricht wird das Handle der Schriftart zurückgegeben.

Windows Forms verwendet die Paarmeldung WM_SETFONT (0x0030), um die Fensterschriftart festzulegen. Sie können dies über Reflector.NET in der Control.OnFontChanged-Methode sehen.

+0

WM_GETFONT return 0 – bebo

+0

Geben Sie ein Codebeispiel bitte – STO

+0

[DllImport ("User32.DLL")] öffentliche statische Extern IntPtr SendMessage ( IntPtr hWnd, Int Msg, int wParam, int lParam); IntPtr fx = SendMessage (button1.Handle, 0x31, 0, 0); – bebo

Verwandte Themen