![]() |
Control Handle anhand der Caption finden
Hallo DP!
Ich brauche eine Möglichkeit, das Handle eines Buttons herauszufinden, von dem ich nur die Caption kenne. Der Button/Die Buttons sind allerdings auf einer anderen Form - Deren Handle ich allerdings kenne. Also, hoffe, dass die Problembeschreibung hinreicht, Der LDer! |
Re: Control Handle anhand der Caption finden
Installier Dir doch WinSpy und lass Dir den Code generieren :zwinker:
|
Re: Control Handle anhand der Caption finden
Bei 246 Buttons?
Viel Arbeit... Die heißen Press_1 bis Press_123 und Release_1 bis Release_123 Hab die extra so genannt... kann aber nicht direkt drauf zugreifen, weil das ne andere Programmiersprache is -.- LDer |
Re: Control Handle anhand der Caption finden
Zumindest das Grundgerüst hättest Du Dir generieren und dann ausbauen können. Aber nun gut, schau Dir mal
![]() |
Re: Control Handle anhand der Caption finden
Es hilft aber nicht viel weiter, weil Winspy intern auch damit arbeitet...
|
Re: Control Handle anhand der Caption finden
Wieso auch nicht, das ist doch IMHO die einfachste Möglichkeit.
|
Re: Control Handle anhand der Caption finden
Also: Ich habe die Buttons etwa so angeordnet:
Code:
Nun habe ich die Handles mit FindWindowEx und WinSpy in ein zweidimensionales Array geladen:
Press_1 Release_1
Press_2 Release_2 Press_3 Release_3 ... ...
Delphi-Quellcode:
Und dann wird das bei mir so aufgerufen:
TButtons=array[1..2]of array[1..123]of HWND;
[...] for J:=1 to 2 do for I:=1 to 13 do vButtons[J][I]:=FindWindowEx2(vGUIWindow, 'Button', (I*J)); //Ich hab jetz mal um Speichers willen nur je 13 Buttons erstellt ;)
Delphi-Quellcode:
Und in eine Schleife gepackt:
procedure TAU3ControlGUI.PressKey(Input: integer);
begin PostMessage(vButtons[1][Input], WM_LBUTTONDOWN, 0, 0); PostMessage(vButtons[1][Input], WM_LBUTTONUP, 0, 0); end;
Delphi-Quellcode:
Die Buttons geben nach Klick testweise erstmal ihre Nummer aus. Ausgabe müsste also sein: "1-1-2-2-3-3-4-4-..."
for I:=1 to 13 do
begin PressKey(I); ReleaseKey(I); end; Ist aber folgendermaßen: "1-2-2-4-3-6-4-8-5-10-6-12-7-1-8-3-9-5-10-7-11-9-12-11-13-13" Was ist da bitte los? Ich denke, die WinSpy-Funktion spinnt irgendwie, weil sonst müsste der Kram doch laufen... Deswegen wollt ich die Dinger ja erst über ihre Caption kriegen^^ Also, *nochmaldiefrageindenraumwerfaufdassjemanddaraufre agiere* Wie bekomme ich das Handle eines Buttons dessen ParentHandle ich kenne, und von dem ich auch weiß, wie er beschriftet ist? Danke vielmals im Voraus für eine passende, schnelle Antwort oder eine andersartige Lösung meines Problems - beispielsweise indem obenstehender Code nochmal auf Herz und Nieren überprüft wird - möglicherweise ist das ja auch mein Fehler^^ |
Re: Control Handle anhand der Caption finden
Beide Programme sind von dir, wobei das eine in Delphi geschrieben ist und das andere in irgendeiner anderen Sprache, die du uns verheimlichst. Warum brauchst du die Handles der Schaltflächen? Da beide Programme von dir sind, kannst du doch jede beliebige Methode der Interprozesskommunikatiion implementieren.
|
Re: Control Handle anhand der Caption finden
Zitat:
Es handelt sich um ein AutoIt-Programm. Eigentlich geht es nur darum, an ein drittes Fenster - diesmal ist es aber nicht von mir - Tastenanschläge zu senden. Und mir ist auch klar, dass sich jetzt wohl jeder fragen wird: "Warum soooo umständlich???" Die Antwort ist einfach: In Delphi geht es schlicht und einfach nicht! Zumindest nicht in diesem speziellen Fall. Ich bin bei dem Versuch, das Ganze in rein-Delphi zu realisieren bereits jede erdenkliche Methode durchgegangen, habe lParamRecords ausprobiert und mir die SendMessages kilometerweit aus der Nase gezogen... Letztere ist jetzt einfach voll :P Also, nun zum zweiten Teil: Zitat:
Lg, LDer Edit_1: Fehler behoben. Edit_2: Das Thema war übrigens schonmal hier, allerdings dann etwas anders: ![]() |
Re: Control Handle anhand der Caption finden
Sollte das dritte Programm keine Frameworks wie Java oder so nutzen, dann sollte es kein Problem sein in dieses Programm Tastaturanschläge zu senden. Voraussetzung ist, dass die entsprechenden Steuerelemente Windowshandles besitzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 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