![]() |
Text von TEdit von einem Fenster auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,
habe mich jetzt stundenlang daran versucht von einem TEdit(Siehe anhang, das Programm dass ich zum dafür verwendet habe um die handles rauszufinden, zeigt auch den text an den ich haben möchte(hannes,... ). Es geht um eine Telefonsoftware von der ich ein Anzeigefenster bei einem Anruf bekomme dass informationen über den Anrufer anzeigt. Nun sollte auf einem seperaten computer auf dem die applikation auch läuft der name auch angezeigt werden, den kann ich über dieses Fenster auslesen. Also
Delphi-Quellcode:
WindowW bekommt ein Handle(das richtige, kann form caption von dem handle auslesen, das passt).
procedure TForm1.Button1Click(Sender: TObject);
var WindowW, childc: HWND; WindowText: array[0..255] of char; begin WindowW := FindWindowByTitle('LDAP'); childc := FindWindowEx(WindowW,0,'TEdit',nil); // Form1.Text := IntToStr(WindowW) + ' ' + IntToStr(childc); GetWindowText(childc,WindowText,255); label2.Caption := windowText; end; Allerdings childc hat immer einen wert von 0, habe alle möglichem methoden ausprobiert(von torry FindControlByNumber und hab probiert das edit zu bekommen). Nichts davon klappt. habs auch über wm_get text probiert. Irgendeine Idee oder Hilfestellung? vielen lieben Dank Nico |
AW: Text von TEdit von einem Fenster auslesen
Das Tool kann Dir den entsprechenden Code doch automatisch generieren ;)
|
AW: Text von TEdit von einem Fenster auslesen
Vielen Dank!
Hatte noch eine sehr alte version von vor ein paar jahren :) Wunderbares update! Danke für die schnelle Antwort. lg Nico |
AW: Text von TEdit von einem Fenster auslesen
Keine Ursache. Übrigens wirst Du mit GetWindowText nicht weit kommen:
Zitat:
|
AW: Text von TEdit von einem Fenster auslesen
Leider, es wird wieder kein text ausgelesen(weder mit get window text noch mit sendmessage, wmgettext
Hab ich da einen Denkfehler?
Delphi-Quellcode:
function FindWindowEx2(hParent: HWND; ChildClassName: string; ChildNr: Word): HWND;
var i: Word; hChild: HWND; begin hChild := 0; Result := 0; Dec(ChildNr); for i := 0 to ChildNr do begin hChild := FindWindowEx(hParent, hChild, PChar(ChildClassName), nil); if hChild = 0 then Break; Result := hChild; end; end; procedure TForm1.Button1Click(Sender: TObject); var S: String; len : Integer; wndMain, wndChild: HWND; begin wndMain := FindWindow('TEditWindow','Findcall.pas'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'TPanel', nil); wndChild := FindWindowEx2(wndChild,'TPanel', 2); wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil); wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil); wndChild := FindWindowEx(wndChild, 0, 'TEditControl', nil); len := Sendmessage(wndChild, WM_GETTEXTLENGTH, 0, 0); SetLength(S, len); if wndChild <> 0 then SendMessage(wndChild, WM_GETTEXT, len+1, lparam(@S[1])); Label2.Caption := S; end; end; Vielen Dank! |
AW: Text von TEdit von einem Fenster auslesen
Ist denn wndChild <> 0?
|
AW: Text von TEdit von einem Fenster auslesen
Ja. also er geht ins if rein, und handle hat eine anständige nummer. Also ich glaub generell sollt es jetzt passen, aber der Text wird nicht ausgelesen.
|
AW: Text von TEdit von einem Fenster auslesen
Dann weiß ich es auch nicht. Möglicherweise hat die Fremdsoftware etwas gegen das Auslesen und fängt daher WM_GETTEXT(LENGTH) ab. Das ist allerdings reine Spekulation.
|
AW: Text von TEdit von einem Fenster auslesen
Aber Toms Programm Winspy, schafft es auch den Text auszulesen, daher überhaupt die Frage, hätte es dieses Programm nicht anzeigen können hätte ich es gleich aufgegeben. :)
Danke aufjedenfall für deine Mühe! Vielleicht meldet sich noch wer. lg |
AW: Text von TEdit von einem Fenster auslesen
Achso, wenn WinSpy das kann, dann solltest Du es auch können. Ich habe natürlich das Programm, um das es geht, nicht hier, daher kann ich nicht viel dazu sagen, aber bekommst Du denn gültige Werte, nicht nur das Handle, sondern auch den Rückgabewert von WM_GETTEXTLENGTH betreffend?
|
AW: Text von TEdit von einem Fenster auslesen
Stimmt, meine Variable len hat nur den Wert 0 nach
Delphi-Quellcode:
Danke für den Hinweis. Woher könnte das kommen?
len := Sendmessage(wndChild, WM_GETTEXTLENGTH, 0, 0);
lg Nico |
AW: Text von TEdit von einem Fenster auslesen
Versuch doch mal GetLastError auszuwerten, nach diesen Aufrufen.
|
AW: Text von TEdit von einem Fenster auslesen
Danke für deine Antwort!
hab jetzt direkt unter der Sendmassage zum testen mal
Delphi-Quellcode:
gemacht aber es kommt "operation completed successfully.len := Sendmessage(wndChild, WM_GETTEXTLENGTH, 0, 0); Form1.caption := SysErrorMessage(GetLastError); |
AW: Text von TEdit von einem Fenster auslesen
Wie ist es so (testhalber)?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var S: String; len : Integer; wndMain, wndChild: HWND; begin wndMain := FindWindow('TEditWindow','Findcall.pas'); if wndMain <> 0 then begin wndChild := FindWindowEx(wndMain, 0, 'TPanel', nil); wndChild := FindWindowEx2(wndChild,'TPanel', 2); wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil); wndChild := FindWindowEx(wndChild, 0, 'TPanel', nil); wndChild := FindWindowEx(wndChild, 0, 'TEditControl', nil); if wndChild <> 0 then begin len := 50000; //Sendmessage(wndChild, WM_GETTEXTLENGTH, 0, 0); SetLength(S, len); SetLength(S, SendMessage(wndChild, WM_GETTEXT, len+1, lparam(PChar(S)))); end; Label2.Caption := S; end; end; |
AW: Text von TEdit von einem Fenster auslesen
Danke an alle!
Problem war dass ich ein TPanel zuviel hatte, hatte beim codegenerator anscheinend eine andere Komponente ausgewählt, könnte auf Unkonzentriertheit dem gestrigen Arbeitsende hin zurückzuführen sein ;) Danke! lg Nico |
AW: Text von TEdit von einem Fenster auslesen
Das wäre doch vermutlich aufgefallen, wenn man auch die Zwischenergebnisse (wndChild) auswerten würde?
|
AW: Text von TEdit von einem Fenster auslesen
Wieso, wenn ein gültiges Handle drinsteht, aber eben nicht das des gesuchten Controls? Ich hatte diesbezüglich ja auch bereits nachgefragt.
|
AW: Text von TEdit von einem Fenster auslesen
Hi!
Danke, ja war ein ordentlicher schlampigkeitsfehler. Habe defakto auf meinen Delphi Quellcode Editor zugegriffen. Habe aufgrund der vielen Panels eine verschachtelung seitens des Telefonprogrammes vermutet aber was solls. Vielen Dank für euren Input! Wie immer super schnell :) lg Nico |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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 by Thomas Breitkreuz