![]() |
Mit Handle Text Eigenschaft benutzen
Weiß jemand wie man es schafft wenn man das handle hat wie man z.B bei ner Memo von einem anderen Prog es auslesen kann und schreiben kann ? Halt bei allen Controls die eine Text eingenschaft haben wäre echt cool wenn mir jemand helfen kann =)
|
Re: Mit Handle Text Eigenschaft benutzen
Hi,
Text auslesen geht so: Du schickst an das Control, von dem du das Handle hast, per SendMessage eine Nachricht WM_GETTEXT. Dann liefert es dir den Text zurück.
Delphi-Quellcode:
Beispiel: Text von Notepad auslesen und
function GetWinText{Version1}(Wnd: HWND): string;
var TextLn: integer; StrBuf: string; begin Result := ''; TextLn := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0); if TextLn = 0 then Exit; SetLength(StrBuf, TextLn+1); try SendMessage(Wnd, WM_GETTEXT, TextLn + 1, Integer(StrBuf)); Result := StrBuf; finally SetLength(StrBuf, 0); end; end; function GetWinText{Version2}(Wnd: HWND): string; var TextLn: Integer; StrBuf: PChar; begin Result := '' TextLn := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0); if TextLn = 0 then Exit; GetMem(StrBuf, TextLn + 1); try SendMessage(Wnd, WM_GETTEXT, TextLn + 1, Integer(StrBuf)); Result := StrBuf; finally FreeMem(StrBuf); end; end; in einem Memo anzeigen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var wnd: HWND; begin wnd := FindWindow('notepad', nil); if wnd <> 0 then begin wnd := FindWindowEx(wnd, 0, 'Edit', nil); Win32Check(wnd <> 0); Memo1.Text := GetWinText(wnd); end; end; Text setzen geht so: Du schickst an das Control, von dem du das Handle hast, per SendMessage eine Nachricht WM_SETTEXT und gibst im 4. Parameter den Text mit.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var wnd: THandle; s: String; begin wnd := FindWindow('notepad', nil); Win32Check(wnd <> 0); wnd := FindWindowEx(wnd, 0, 'Edit', nil); s := 'hallo'#13#10'notepad'; SendMessage(wnd, WM_SETTEXT, 0, LParam(PChar(s))); end; |
Re: Mit Handle Text Eigenschaft benutzen
das geht aba nur leider bei edit gibt es keine noch andere möglchkeit es bei mehreren auszulesen ?
|
Re: Mit Handle Text Eigenschaft benutzen
Das geht nicht nur bei Edit. Auch z.B bei Memo, Button, Static.
Welches Control möchtest du denn auslesen? |
Re: Mit Handle Text Eigenschaft benutzen
ich wollte ein Programm machen das sich z.B das eingabe feld von ICQ merkt und dan die ausgehenden Nachrichten aufnimmt und dan kodiert wegschickt und dan beim anderen wo die nachrichten rienkommen die kodierung filtern und dan wieder richtig anzeigen mit der Kodierung hab ich schon hinbekommen nur mit dem Handle noch net :(
|
Re: Mit Handle Text Eigenschaft benutzen
:hi:
Delphi-Quellcode:
function GetWinText{final Version3}(Wnd: HWND): string;
var TextLn: integer; begin Result := ''; TextLn := SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0); if TextLn = 0 then Exit; SetLength(Result, TextLn+1); SendMessage(Wnd, WM_GETTEXT, TextLn + 1, Integer(Result)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz