AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClassName von Edit

Ein Thema von Ykcim · begonnen am 3. Mär 2021 · letzter Beitrag vom 5. Mär 2021
 
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#1

ClassName von Edit

  Alt 3. Mär 2021, 10:32
Hallo Zusammen,

ich versuche gerade auf ein anderes Programm zuzugreifen und habe da meine Schwierigkeiten...

Delphi-Quellcode:
var
  fwnd: THandle;
  wnd: HWND;
  wnd_edit: HWND;
  CName: array [0..255] of Char;
begin
   fwnd := FindWindow(nil, 'Das andere Programm');
   GetClassName(fWND, CName, 256);

   wnd := FindWindowEx(wnd, 0, CName, nil);
   wnd := FindWindowEx(wnd, 0, CName, nil);
   wnd := FindWindowEx(wnd, 0, CName, nil);
   wnd := FindWindowEx(wnd, 0, CName, 'Empfänger'); //Bis hierhin passt es. Der ClassName der App ist 'WindowsForms10.Window.8.app.0.141b42a_r6_ad1'

   wnd_edit := FindControlByNumber(wnd, 'WindowsForms10.EDIT.app.0.141b42a_r6_ad1', 1); //Wenn ich jetzt aber auf das Edit zugreifen möchte, muss ich den ClassName ändern
   if wnd_edit<>0 then SendMessage(wnd_edit,WM_SETTEXT,0,Integer(Pchar(Edit_HausNr.Text))); //Wenn ich das händisch mach geht das.

   //wnd_edit:= FindControlByNumber(FindWindow(CName, nil),'Edit', 1) ///Das klappt nicht, dann wird wnd_edit=0
end;

Das Problem ist, dass ich das Edit mit der ControllNr finde:
Delphi-Quellcode:
function TTMSForm2.FindControlByNumber(hApp: HWND; ClassName: string; ControlNr: Word = 1): HWND;
var
  i: Word;
  hControl: HWND;
begin
  Result := 0;
  if IsWindow(hApp) then
  begin
    Dec(ControlNr);
    hControl := 0;
    for i := 0 to ControlNr do
    begin
      hControl := FindWindowEx(hApp, hControl, PChar(ClassName), nil);
      if hControl = 0 then
        Exit;
    end;
  end;
  Result := hControl;
end;
Dafür brauche ich den ClassName. Der ändert sich aber:
Von der App : WindowsForms10.Window.8.app.0.141b42a_r6_ad1
Von dem Edit : WindowsForms10.EDIT.app.0.141b42a_r6_ad1

Ich glaube nicht, dass es sinnvoll ist, den ClassName "händisch" zu ändern. Wenn die App auf einem anderen Rechner läuft, wird es nicht mehr klappen.

Kann mir jemand einen Tip geben, wie ich das hinbekomme?

Vielen Dank
Patrick
Patrick

Geändert von Ykcim ( 3. Mär 2021 um 10:40 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz