![]() |
gelöst Text aus Fenster einen andren Anwendugn auslegen
Hallo Leute,
ich wollte von meinem Program aus ein Fenster (Dialogbox) auslesen. Der Text im Fenster ist ab einer bestimmten stelle nicht mehr gleich. Es steht dort immer die ID des Datensatzes drin welche ich gene hätte. Dazu habe ich erst mal versucht das Fenster zu finden
Code:
Das Fentser wurde gefunden und sogar das "innere" mit dem Text.
wnd := Findwindow('#32770', 'Test - gut');
wnd := FindWindowEx(wnd, 0, 'Edit', 'Datzsatz ID : 32768'); Leider ändert sich ja immer die ID und diese möchte ich ja auslesen. Dazu habe ich dieses versucht.
Code:
Leider ist kein Text in Windowtext. Die zweite wnd sollte ja beim Fall 1 und 2 immer gleich sein. Das ist nicht so. Aus diesem Grund bekomm ich villeicht keinen Text.
var
wnd: HWND; WindowText: array[0..255] of char wnd := Findwindow('#32770', 'Test - gut'); wnd := FindWindowEx(wnd, 0, 'Edit', nil); GetWindowsText (wnd, WindowText, 255) Kann mir jemand hier weiterhelfen :wall: Cu Tanja. |
Re: Text aus Fenster einen andren Anwendugn auslegen
Hallo,
kann es sein, dass es in dem Fenster mehrere Felder gibt? Dann könnte es sein, dass das falsche Fenster ausgelesen wird. Eventuell könntest du es mal mit ![]()
Delphi-Quellcode:
function EnumChildProc(wnd: HWND; Lines: TStrings): BOOL; stdcall;
var WindowText: array[0..255] of char; begin Result := True; windows.GetWindowText(wnd, WindowText, 255); Lines.Add(WindowText); end; procedure TForm1.Button1Click(Sender: TObject); var wnd: HWND; begin wnd := Findwindow('#32770', 'Test - gut'); if wnd > 0 then EnumChildWindows(wnd, @EnumChildProc, Integer(memo1.Lines)); end; |
Re: Text aus Fenster einen andren Anwendugn auslegen
Moin Tanja,
was passiert, wenn Du das hier
Delphi-Quellcode:
verwendest?
var
hMain : DWORD; hSub : DWORD; iLen : integer; pText : PChar; begin hMain := FindWindow('#32770','Test - gut'); if hMain = 0 then begin ShowMessage('Meldung nicht gefunden'#13#10+ SysErrorMessage(GetLastError)); Exit; end; hSub := FindWindowEx(hMain,0,'EDIT',nil); if hMain = 0 then begin ShowMessage('Inhalt nicht gefunden'#13#10+ SysErrorMessage(GetLastError)); Exit; end; iLen := SendMessage(hSub,WM_GETTEXTLENGTH,0,0)+1; if iLen = 0 then begin ShowMessage('Kein Inhalt'); Exit; end; pText := AllocMem(iLen); try if SendMessage(hSub,WM_GETTEXT,wParam(iLen),lParam(pText)) = 0 then begin ShowMessage('0 Zeichen kopiert'); end else begin ShowMessage(pText); end; finally FreeMem(pText,iLen); end; end; |
Re: Text aus Fenster einen andren Anwendugn auslegen
Zitat:
Tanja |
Re: gelöst Text aus Fenster einen andren Anwendugn auslegen
Delphi-Quellcode:
Dies Funktioniert mit normnalen Programmen super. Leider habe ich ein Zeichen Problem. Das Fester was ich auslesen will heist:
procedure TForm1.Button1Click(Sender: TObject);
var hMain : DWORD; hSub : DWORD; iLen : integer; pText : PChar; begin hMain := FindWindow(NIL,'meineeiner'); if hMain = 0 then begin ShowMessage('Meldung nicht gefunden'#13#10+ SysErrorMessage(GetLastError)); Exit; end; hSub := FindWindowEx(hMain,0,'EDIT',nil); if hMain = 0 then begin ShowMessage('Inhalt nicht gefunden'#13#10+ SysErrorMessage(GetLastError)); Exit; end; iLen := SendMessage(hSub,WM_GETTEXTLENGTH,0,0)+1; if iLen = 0 then begin ShowMessage('Kein Inhalt'); Exit; end; pText := AllocMem(iLen); try if SendMessage(hSub,WM_GETTEXT,wParam(iLen),lParam(pText)) = 0 then begin ShowMessage('0 Zeichen kopiert'); end else begin ShowMessage(pText); end; finally FreeMem(pText,iLen); end; end; 'meineeiner'successfully saved" Die Striche kann ich ja bei der Fensterbezeichnung nicht eingeben da streik delphi. Muss ich das über ASCII Codes eledigen. Weil so hat es bei mir nicht funktioniert.
Delphi-Quellcode:
hMain := FindWindow(NIL,chr(039)+'meineeiner'+chr(039)+' successfully saved'+chr(034));
|
Re: gelöst Text aus Fenster einen andren Anwendugn auslegen
Dein Problem hat absolut nichts mit dem ursprünglichen Threadinhalt zu tun! Hochkommata in Strings musst du in Delphi verdoppeln, also beispielsweise '''' für ein einfaches Hochkomma. Übrigens ist "hat nicht funktioniert" keine Fehlermeldung.
|
Re: gelöst Text aus Fenster einen andren Anwendugn auslegen
Zitat:
Danke für die Hilfe. Es bezog sich auf die oben genante Lösung. Und hat nich funktioniert meint Das Fenster wurde nicht gefunden. Gelöst: Das Fenster wurde gefunden wie oben im meinen Post geschrieben. Es ligt daran das die Zeichen nich ausgelesen werden können. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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