![]() |
Dynamisch Erzeugte Control IDs finden
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 |
AW: Dynamisch Erzeugte Control IDs finden
Eher ungewöhnlich, dass sich die ID ändert. Über die ID "spricht" man als Programmierer in seinem Code ja auch an:
Code:
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.
btnClose = 1001;
btnSave = 1002; |
AW: Dynamisch Erzeugte Control IDs finden
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. |
AW: Dynamisch Erzeugte Control IDs finden
Folgender Code kommt bei mir ohne Button Titel zurück.
Delphi-Quellcode:
Kann ich diese Button Suche umgehen und irgendwie analysieren welche Message dieser Button an die Hauptanwendung schickt und das Simulieren?
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; |
AW: Dynamisch Erzeugte Control IDs finden
Zitat:
Zitat:
|
AW: Dynamisch Erzeugte Control IDs finden
Und wieder vielen Dank an Frühlingsrolle, sehr interessanter Ansatz. Werde mir das direkt anschauen.
|
AW: Dynamisch Erzeugte Control IDs finden
Wenn man Buttons dynamisch erzeugt, kann man doch auch das Tag-Property setzen und damit den Button wiederfinden.
Habe ich schon öfter so gemacht. |
AW: Dynamisch Erzeugte Control IDs finden
Habe "Externe Anwendung" überlesen. Wenn man keinen Zugriff auf den Quellcode hat dann geht das mit dem Tag natürlich nicht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 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 by Thomas Breitkreuz