Hallo,
ich möchte ein Programm schreiben, dass, wenn die Maus über z.B. Editierfelder, Eingabefelder, Memofelder etc. von fremden Programmen sich befindet, den Text-Font ausliest.
Mit den untenstehenden Code kann ich den unter dem Mauszeiger befindlichen Text-Font nur bedingt auslesen. Denn dies klappt leider nur z.B. mit dem gewöhnlichen Texteditor ("NotePad") oder bei dem Eingabefeld der Internetadresse im Internet-Explorer.
Aus irgendeinen Grund klappt es nicht in "grösseren" Schreibprogrammen, wie z.B. "Word" oder auch im "Delphi-Editor"!
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| Type pmeFont = ^mFont; mFont = record szFont : tagLOGFONT; end;
Var cp : TPoint; hDefFont : HFONT; hMemoEdit : HWND; meFont : pmeFont; myHandle : Integer; NameFont : String;
Procedure TForm1.ButtonClick(Sender: TObject); begin GetCursorPos(cp); myHandle:=WindowFromPoint(cp);
NameFont:='kein Zeichensatzname'; GetMem(meFont,sizeof(tagLOGFONT)); if myHandle <> 0 then begin hMemoEdit:=GetWindow(myHandle,GW_HWNDFIRST); hDefFont :=SendMessage(hMemoEdit,WM_GETFONT,0,0); if hDefFont <> 0 then begin GetObject(hDefFont,sizeof(tagLOGFONT),meFont); NameFont:='Zeichensatzname: '+meFont.szFont.lfFaceName; end; end; FreeMem(meFont); end; |
Hat jemand eine Idee woran dies liegen kann?
Bye Crowbar