AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fremder Button: Mausklick simulieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fremder Button: Mausklick simulieren

Ein Thema von Chewie · begonnen am 27. Aug 2002 · letzter Beitrag vom 27. Aug 2002
Antwort Antwort
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#1

Fremder Button: Mausklick simulieren

  Alt 27. Aug 2002, 17:17
Hallo. Wie kann ich in einer fremden Anwendung einen bestimmten Button, dessen Handle ich habe, klicken?
Die einzige Möglichkeit, die mir einfällt, wäre, die Position des Buttons relativ zum Bildschirm zu errechnen, das dann so umrechnen, dass ich es als Parameter bei Mouse_Event benutzen kann und dann mittels dieser Funktion einen Klick zu simulieren. Natürlich muss dann das Fenster, dem der Button "gehört", in den Vordergrund gebracht werden. Leider ist diese Möglichkeit recht aufwändig und ich frag mich, ob es nicht leichter geht.
Z. B. indem ich eine WM_COMMAND an das Parent-Fenster des Buttons schicke. Leider hab ich nicht die ID des Buttons (das Zielprogramm ist VCL) und überhaupt weiß ich auch nicht, ob das funktionieren würde.
Gibts da irgendeine andere, einfachere Lösung?

Ein weiteres Problem ist, dass ich die Caption einer Control (wiederum oben genannter Button) in einer fremden Anwendung herausfinden will. Dass GetWindowText nicht funktioniert, steht ja im SDK, und auch mit WM_GETTEXT gehts nicht. Was allerdings funktioniert, ist WM_GETTEXTLENGTH und WM_SETTEXT. Also muss ich doch irgendeine Art von Zugriff auf die Caption haben. Kennt jemand da eine Möglichkeit?

ich danke allen im Voraus, die mir helfen können.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 27. Aug 2002, 17:21
Moin Chewie,

das Anklicken sollte so funktionieren:

Code:
SendMessage(hButton,BM_CLICK,0,0);
Wenn Du schon WM_SETTEXT anwenden konntest, verstehe ich allerdings nicht, wo's bei WM_GETTEXT hakt.
Hast Du vergessen den Buffer zu reservieren, oder die Bufferlänge zu klein gesetzt?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3
  Alt 27. Aug 2002, 17:55
Ah, BM_..., wunderbar. Wusste nicht, dass es das gibt, hab nur WM_... gefunden. Ich wollte wieder den kompliziertesten Weg gehen. Danke.

Nachtrag: Und WM_GETTEXT funktioniert jetzt plötzlich auch. Gestern nicht. Komisch. Lag aber wahrscheinlich an den Buffern.

Und schon wurden aus 30 Zeilen Code 10...
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4
  Alt 27. Aug 2002, 18:01
Vielleicht hilft dir auch das:

http://www.swissdelphicenter.ch/de/showcode.php?id=727
Thomas
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 27. Aug 2002, 19:47
Moin Chewie,

BM_ = Button Message
WM_ = Windows Message

und es gibt noch viele andere z.B.

LVM_ ListView Message
TVM_ TreeView Message
EM_ Edit Message
CB_ ComboBox Message
LB_ ListBox Message

und, und, und...

Die fallen mir nur gerade so auf anhieb ein.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6
  Alt 27. Aug 2002, 20:24
Ja, stimmt. Ich habe nicht noch viel Erfahrung mit nonVCl-Programmen und hab deswegen neben den "normalen" WM_...-Messages nur die Listbox-spezifischen gebraucht. Da hätts mir aber auch einfallen müssen, dass es das auch für die anderen Klassen gibt. Na ja, 1 und 1 zusammenzuzählen ist doch manchmal schwer...
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  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 20:06 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