AGB  ·  Datenschutz  ·  Impressum  







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

Control Handle anhand der Caption finden

Offene Frage von "LDericher"
Ein Thema von LDericher · begonnen am 28. Apr 2009 · letzter Beitrag vom 28. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#1

Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 19:35
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!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 20:07
Installier Dir doch WinSpy und lass Dir den Code generieren
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 20:11
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 20:17
Zumindest das Grundgerüst hättest Du Dir generieren und dann ausbauen können. Aber nun gut, schau Dir mal MSDN-Library durchsuchenFindWindowEx an, das sollte hoffentlich helfen (sofern das kein Java-Programm ist).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 20:30
Es hilft aber nicht viel weiter, weil Winspy intern auch damit arbeitet...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 20:31
Wieso auch nicht, das ist doch IMHO die einfachste Möglichkeit.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 20:58
Also: Ich habe die Buttons etwa so angeordnet:

Code:
Press_1   Release_1
Press_2   Release_2
Press_3   Release_3
  ...       ...
Nun habe ich die Handles mit FindWindowEx und WinSpy in ein zweidimensionales Array geladen:

Delphi-Quellcode:
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 ;)
Und dann wird das bei mir so aufgerufen:

Delphi-Quellcode:
procedure TAU3ControlGUI.PressKey(Input: integer);
begin
PostMessage(vButtons[1][Input], WM_LBUTTONDOWN, 0, 0);
PostMessage(vButtons[1][Input], WM_LBUTTONUP, 0, 0);
end;
Und in eine Schleife gepackt:

Delphi-Quellcode:
  for I:=1 to 13 do
    begin
    PressKey(I);
    ReleaseKey(I);
    end;
Die Buttons geben nach Klick testweise erstmal ihre Nummer aus. Ausgabe müsste also sein: "1-1-2-2-3-3-4-4-..."
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^^
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 21:02
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 21:20
Zitat von Luckie:
in irgendeiner anderen Sprache, die du uns verheimlichst.
Verzeihung
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

Also, nun zum zweiten Teil:
Zitat von Luckie:
Da beide Programme von dir sind, kannst du doch jede beliebige Methode der Interprozesskommunikatiion implementieren.
Liebend gern. OK, sag' mir wie's möglich ist und ich mach es.

Lg, LDer

Edit_1: Fehler behoben.

Edit_2: Das Thema war übrigens schonmal hier, allerdings dann etwas anders: http://www.delphipraxis.net/internal...t.php?t=155554
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Control Handle anhand der Caption finden

  Alt 28. Apr 2009, 21:26
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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