AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Dynamisch Erzeugte Control IDs finden

Dynamisch Erzeugte Control IDs finden

Ein Thema von jacky213 · begonnen am 2. Mär 2020 · letzter Beitrag vom 3. Mär 2020
Antwort Antwort
jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#1

Dynamisch Erzeugte Control IDs finden

  Alt 2. Mär 2020, 15:47
Ich wollte einen Button in einer externen Anwendung betätigen und habe dafür mittels X-Spy die Control ID ermittelt. Soweit so gut, allerdings verändern sich die Control ID's bei jedem Programmstart und ich muss diese dann wieder suchen. Ich konnte mir bereits alle Control ID's einer bestimmten Klasse aus der externen Anwendung laden und müsste nun wissen wie ich an die Button Captions oder die Namen komme.

Danke im Vorraus

Geändert von jacky213 ( 3. Mär 2020 um 00:02 Uhr)
  Mit Zitat antworten Zitat
Alt 3. Mär 2020, 00:55     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Dynamisch Erzeugte Control IDs finden

  Alt 3. Mär 2020, 04:16
Eher ungewöhnlich, dass sich die ID ändert. Über die ID "spricht" man als Programmierer in seinem Code ja auch an:
Code:
btnClose = 1001;
btnSave = 1002;
Das sich das Handle ändert ist logisch, denn Windows vergibt bei jedem Programmstart neu. Was ja auch Sinn ergibt, denn Windows benötigt eine systemweit einmalige ID für das Control und das ist das Handle, weil es sehr Wahrscheinlich ist, dass die Programmierer in ihren Anwendungen die Schaltfläche zum Schließen btnColse genannt haben. Deswegen kann deine Beobachtung, dass sich die Control-ID bei jedem Start anders ist, falsch ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#3

AW: Dynamisch Erzeugte Control IDs finden

  Alt 3. Mär 2020, 09:04
Tjoaa aber X-Spy zeigt mir bei jedem Neustart der externen Anwendung eben eine neue Control ID bei jedem Button.

Woran kann das liegen?

Komisch ist auch das einige Buttons sich manchmal klicken lassen und manchmal nicht.
  Mit Zitat antworten Zitat
jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#4

AW: Dynamisch Erzeugte Control IDs finden

  Alt 3. Mär 2020, 09:27
Folgender Code kommt bei mir ohne Button Titel zurück.

Delphi-Quellcode:
function GetButtonText (wnd: HWND; ID:Integer) : String;
var
  AR: array[0..254] of Char;
begin
  wnd := GetDlgItem(wnd,ID);
  GetWindowText(wnd, @AR, SizeOf(AR));
  Result : = AR;
end;
Kann ich diese Button Suche umgehen und irgendwie analysieren welche Message dieser Button an die Hauptanwendung schickt und das Simulieren?

Geändert von jacky213 ( 3. Mär 2020 um 09:45 Uhr)
  Mit Zitat antworten Zitat
Alt 3. Mär 2020, 16:09     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#5

AW: Dynamisch Erzeugte Control IDs finden

  Alt 3. Mär 2020, 19:21
dann muss das HWND des Panels übergeben werden.
Die Doku sagt was Anderes.
Zitat:
A handle to the dialog box that contains the control.
Aber es kann natürlich sein, dass DialogItems immer direkt auf dem Fenster liegen müssen (z.B. Groupbox drumrum, statt darunter), damit das mit der ID richtig funktioniert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
jacky213

Registriert seit: 2. Mär 2011
146 Beiträge
 
#6

AW: Dynamisch Erzeugte Control IDs finden

  Alt 3. Mär 2020, 19:22
Und wieder vielen Dank an Frühlingsrolle, sehr interessanter Ansatz. Werde mir das direkt anschauen.
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
529 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Dynamisch Erzeugte Control IDs finden

  Alt 3. Mär 2020, 20:22
Wenn man Buttons dynamisch erzeugt, kann man doch auch das Tag-Property setzen und damit den Button wiederfinden.

Habe ich schon öfter so gemacht.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
529 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Dynamisch Erzeugte Control IDs finden

  Alt 3. Mär 2020, 20:26
Habe "Externe Anwendung" überlesen. Wenn man keinen Zugriff auf den Quellcode hat dann geht das mit dem Tag natürlich nicht.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Alt 3. Mär 2020, 20:40     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:35 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