Entwickler-Ecke

Windows API - eingabefenster eines anderen programms schreiben/lesen.


Martin91 - So 17.06.07 14:15
Titel: eingabefenster eines anderen programms schreiben/lesen.
Hi,
ich möchte in ein eingabefenster eines anderen programmes lesen und schreiben.
Könnte mir jemand ein paar codezeilen posten?

MfG Martin


Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 17.06.2007 um 18:32


Marc. - So 17.06.07 14:42

Ein paar Codezeilen?

Delphi-Quelltext
1:
2:
3:
begin
 { Benutze die Suche ! }
end;
:)


Martin91 - So 17.06.07 18:22

Ich hab schon gesucht! entweder ich bin zu blöd zum suchen oder es gibts keine derartigen treads.

Bitte kann mir keiner helfen?

Martin


alias5000 - So 17.06.07 18:46

Suche in der Entwickler-Ecke WM_GETTEXT wäre ein Stichwort, da sollte es einige Lösungen geben. Oder zum Beispiel Suche in der Entwickler-Ecke TEXT AUS FREMDER ANWENDUNG AUSLESEN sollte IMHO auch was bringen.

Gruß
alias5000


fuba - Fr 22.06.07 01:58

als erstes benötigst du "FindWindow"
diesen befel findest du 100% im forum.

Dann such mal nach "SendMessage" findest du auch im forum

danach wie schon erwähnt wurde "WM_GETTEXT" und / oder "WM_SETTEXT".

wobei du bei WM_SETTEXT warscheinlich am anfang probleme haben wirst, ging mir auch so ;)

aber hier mal 2 kleine Beispiele:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
var
  wnd: HWND;
begin
  SendMessage(wnd, WM_SETTEXT, 0, integer(pchar('Hier kommt der gewünschte Text rein')));
end;


und WM_GETTEXT ist auch nicht so ohne ^_^

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button1Click(Sender: TObject);
var
  wnd: HWND;
  Buffer: PChar;
  len: Integer;
  s: string;
begin
  len := SendMessage(wnd, WM_GETTEXTLENGTH, 0, 0)+1;
  GetMem(Buffer, len);
  try
    ZeroMemory(Buffer, len);
    SendMessage(wnd, WM_GETTEXT, len, lParam(Buffer));
    s:=Buffer;
  finally
    FreeMem(Buffer, len);
  end;
end;


die variable "s" ist hier der text der im handle "wnd" steht.

aber um das umsetzen zu können such dir erstmal "FindWindow" und versuch dich damit mal.
Ohne "FindWindow" wirst nicht weiterkommen, aber das erklär ich hier jetzt nicht, hab stress und steht auch genug im forum ^_^