Registriert seit: 29. Dez 2006
Ort: NRW
831 Beiträge
Delphi 10.4 Sydney
|
AW: ClassName von Edit
5. Mär 2021, 23:03
Ullala, dass ich noch nicht mein Thema!
Erst einmal vielen Dank und auch für das Beispiel! Das habe ich wirklich gebraucht...
Ich habe jetzt die ersten Aktionen hinbekommen und sie laufen auch auf einem anderen Rechner...
Ich habe es jetzt erst einmal so gelöst - mit Sicherheit noch nicht der Weisheit letzter Schluss...
Delphi-Quellcode:
function EnumChildProc(AHandle: THandle; Rows: TRows): BOOL; stdcall;
var
buffer: array[0..255] of Char;
caption: array[0..255] of Char;
I: integer;
begin
while (Rows[0,I]<>'') or (I=Length(Rows[0]) -0) do begin
INC(I);
end;
Result := True;
GetClassName(AHandle, buffer, SizeOf(buffer)-1);
SendMessage(AHandle, WM_GETTEXT, 256, Integer(@caption));
Rows[0,I] := IntToStr(AHandle);
Rows[1,I] := string(buffer);
Rows[2,I] := Caption;
end;
Delphi-Quellcode:
procedure TTMSForm2.Write_Empfaenger(Rows: TRows);
var wnd_temp: HWND;
I: integer;
begin
for I := 0 to Length(Rows[0]) -1 do begin
wnd_temp:=StrToInt(Rows[0,I]);
case I of
0: SendMessage(wnd_temp,WM_SETTEXT,0,Integer(Pchar(Edit_HNr_E.Text))); //HNr.
//1: // TButton
2: SendMessage(wnd_temp,WM_SETTEXT,0,Integer(Pchar(Edit_Land_E.Text))); //Land
3: SendMessage(wnd_temp,WM_SETTEXT,0,Integer(Pchar(Edit_Ort_E.Text))); //Ort
4: SendMessage(wnd_temp,WM_SETTEXT,0,Integer(Pchar(Edit_PLZ_E.Text))); //PLZ
5: SendMessage(wnd_temp,WM_SETTEXT,0,Integer(Pchar(Edit_Strasse_E.Text))); //Strasse
6: SendMessage(wnd_temp,WM_SETTEXT,0,Integer(Pchar(Edit_Name_E.Text))); //Nachname
7: SendMessage(wnd_temp,WM_SETTEXT,0,Integer(Pchar(Edit_Firma_E.Text))); //Firma
8: SendMessage(wnd_temp,WM_SETTEXT,0,Integer(Pchar(Edit_Vorname_E.Text))); //Vorname
end;
end;
end;
Delphi-Quellcode:
procedure TTMSForm2.AdvGlowButton2Click(Sender: TObject);
var
fwnd: THandle;
wnd: HWND;
CName: array [0..255] of Char;
Rows: TRows;
begin
fwnd := FindWindow(nil, 'AndereApp');
GetClassName(fWND, CName, 256);
wnd := FindWindowEx(fwnd, 0, CName, nil);
wnd := FindWindowEx(wnd, 0, CName, nil);
wnd := FindWindowEx(wnd, 0, CName, 'Empfänger');
SetLength(Rows,3,9);
EnumChildWindows(wnd, @EnumChildProc, Integer(Rows));
Write_Empfaenger(Rows);
end;
Ich guck mal, wie weit ich jetzt komme. Muss noch Menü's, ComboBoxen und Tabellen abgreifen.
Vielen Dank!!!
Patrick
Patrick
|