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
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: ClassName von Edit

  Alt 3. Mär 2021, 10:56
Ändert sich auch die Caption andauernd?
Wenn beides dynamisch ist, würde ich über PID ein Handle ermitteln.

Ist Control-ID auch dynamisch muss man sich durch alle Childs durchiterieren.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#2

AW: ClassName von Edit

  Alt 3. Mär 2021, 11:01
Das Problem ist, dass das Edit kein Caption hat...

Was meinst Du mit PID?
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: ClassName von Edit

  Alt 3. Mär 2021, 11:06
Ich meinte Caption vom Ziel-Fenster.
PID = ProcessID
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: ClassName von Edit

  Alt 3. Mär 2021, 11:14
Andersrum, wenn ich was Fernsteuern mag, schau ich mir mit WinSpy ö.ä. erstmal das Ziel an.

Wenn ich darüber eine feste Control-Id bekomme für das Edit ist die halbe Miete schon im Sack.

Dann nurnoch eine Möglichkeit finden mich mit dem Ziel zu verbinden.

Also per FindWindow() ein Handle holen. Vom Fenster, nicht vom Edit!
Wenn das nicht möglich ist halt über die ProcessID.

Dann zum Beispiel sowas machen
Code:
SendMessage(GetDlgItem(dasHandle, dieControlID), WM_SETTEXT, 0, Integer(PChar('neuer Text')));
Um text zu ändern.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 3. Mär 2021 um 11:38 Uhr) Grund: Korrigiert
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#5

AW: ClassName von Edit

  Alt 3. Mär 2021, 12:07
Am Ende ist das mein Problem: Der ClassName ändert sich...

Ich hatte folgendes probiert, aber damit komme ich nicht weiter:

Delphi-Quellcode:
   fwnd := FindWindow(nil, 'WmD_VersandLabel');
   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');

   for I := 0 to 50 do begin
      wnd_edit:= GetDlgItem(wnd, I);
   end;
Ich wollte einfach mal sehen, welche ID's er findet - leider immer 0.

Ich habe mal den Tree in den Anhang gestellt, vielleicht gibt das ja Aufschluss...

An die Edits von Empfänger möchte ich ran...

Vielen Dank
Patrick
Angehängte Grafiken
Dateityp: jpg Window_Tree.jpg (107,6 KB, 16x aufgerufen)
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: ClassName von Edit

  Alt 3. Mär 2021, 12:30
Delphi-Quellcode:
   fwnd := FindWindow(nil, 'WmD_VersandLabel');
   GetClassName(fWND, CName, 256);

   wnd := FindWindowEx(wnd, 0, CName, nil);
ersetze mal im findwindowex() wnd mit fwnd. Vielleicht hilft es?

Wenn du meinen vorschlag von oben folgst, ist classname oder handle dank GetDlgItem() überflüssig.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 3. Mär 2021 um 12:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: ClassName von Edit

  Alt 3. Mär 2021, 12:42
Ich wollte einfach mal sehen, welche ID's er findet - leider immer 0.
Dir ist schon bewusst das Control-Ids in die Zehntausende gehen können?
Ein 0 bis 50 durchiterieren bringt da nichts.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#8

AW: ClassName von Edit

  Alt 3. Mär 2021, 13:47
Zitat:
Dir ist schon bewusst das Control-Ids in die Zehntausende gehen können?
Ja, aber ich wollte wissen, ob er irgendwann etwas anderes als 0 zurückliefert...

Ich habe es jetzt so versucht:
Delphi-Quellcode:
 fwnd: THandle;
  wnd: HWND;
  wnd_edit: HWND;
  CName: array [0..255] of Char;
  I: integer;
begin
   fwnd := FindWindow(nil, 'WmD_VersandLabel');
   GetClassName(fWND, CName, 256);

   wnd := FindWindowEx(fwnd, 0, CName, nil);
   wnd := FindWindowEx(wnd, 0, CName, nil);
   wnd := FindWindowEx(wnd, 0, CName, 'Empfänger');

   SendMessage(GetDlgItem(fwnd, 5), WM_SETTEXT, 0, Integer(PChar(Edit_Strasse_E.Text)));
wnd hat dann des Wert von Empfänger (263610)
Dort liegen auf die Felder an die ich möchte. Aber leider ändert sich ja dann der ClassName von WindowsForms10.Window.8.app.0.141b42a_r6_ad1 nach WindowsForms10.EDIT.app.0.141b42a_r6_ad1

Ich habe mal geguckt, was er mit GetDlgItem(fwnd, 5) zurückliefert - leider immer nur eine 0.

Irgendwie habe ich es noch nicht geblickt...
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:52 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