AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Benachrichtigung beim Drücken eines fremden Buttons?
Thema durchsuchen
Ansicht
Themen-Optionen

Benachrichtigung beim Drücken eines fremden Buttons?

Ein Thema von PeterPanino · begonnen am 26. Feb 2008 · letzter Beitrag vom 27. Feb 2008
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 26. Feb 2008, 03:53
Ich möchte immer dann, wenn in einem ganz bestimmten fremden Programm in einem ganz bestimmten Fenster ein ganz bestimmter Button gedrückt wird, benachrichtigt werden. Ist das möglich?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 26. Feb 2008, 07:11
Hallo,

Installiere einen Maushook und werte beim globalen OnClick den Classennamen + Buttoncaption unter der Maus aus.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 26. Feb 2008, 08:48
Wenn du das Buttonhandle hast, dann kannst du auch subclassing betreiben. Damit fängst du nur die MEssages an den Button ab und nicht alle möglichen MEssages wie bei einem globalen Hook.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 26. Feb 2008, 10:52
Zitat von sirius:
Wenn du das Buttonhandle hast, dann kannst du auch subclassing betreiben. Damit fängst du nur die MEssages an den Button ab und nicht alle möglichen MEssages wie bei einem globalen Hook.
Das wäre natürlich eine Möglichkeit. Ausser das Fenster und somit der Button wird beim Öffnen dynamisch erstellt, dann ändert sich das Handle jedes Mal.
Thomas
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 27. Feb 2008, 01:04
Vielen Dank für die bisherigen Hinweise. Ich habe das Fenster des betreffenden Programms 2 mal aufgerufen und mit Winspy jeweils einen Snapshot des gewünschten Buttons gemacht. (S. die an diese Nachricht angehängten Screenshots).

Einmal ist das Handle 30ECE, das andere mal 20ECA. Ist das ein Hinweis dafür, dass das Fenster mit dem Button dynamisch erzeugt wird?

Das Instance Handle ist aber beide Male 400000.

Welcher von diesen Werten kann denn nun zur Identifizierung des Buttons herangezogen werden?
Miniaturansicht angehängter Grafiken
winspy2_123.gif   winspy1_826.gif  
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 27. Feb 2008, 08:31
Ach, das Fenster ändert sich ständig. Na da wird das Problem etwas größer.
Egal welche Methode du jetzt anwendest, du müsst immer überwachen, wann das Fenster geöffnet wurde und welches Handle der Button hat. Die Überwachung geht mit einem Hook über alle Messages des Programmes irgendwie.

Aber hier würde ich vielleicht noch einen ganz anderen Ansatz wählen. Varianten (über DLL-Injection oder Code-Injection):
-Messages des Programms komplett überwachen
-bestimmte WinAPI-Aufrufe überwachen (z.B. CreateWindow)
-Die Klasse TNTbutton überwachen

Vielleicht gibt es noch mehr Möglichkeiten aber einfach wird es nicht. Ist es unbedingt nötig?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 27. Feb 2008, 08:50
Zitat von sirius:
Ach, das Fenster ändert sich ständig. Na da wird das Problem etwas größer.
Egal welche Methode du jetzt anwendest, du müsst immer überwachen, wann das Fenster geöffnet wurde und welches Handle der Button hat. Die Überwachung geht mit einem Hook über alle Messages des Programmes irgendwie.
Die billige aber dafür einfache Variante wäre, mittels einem Timer das Vorhandensein und das Handle des Fensters zu überwachen.
Aber im Endeffekt kommst du ohnehin nicht um einen Hook oder Code-Injection herum um den Button Klick abzufangen.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 27. Feb 2008, 11:46
Zitat von bitsetter:
Aber im Endeffekt kommst du ohnehin nicht um einen Hook oder Code-Injection herum um den Button Klick abzufangen.
oder mache es so:
Zitat:
Installiere einen Maushook und werte beim globalen OnClick den Classennamen + Buttoncaption unter der Maus aus.
(Habe ein Programm im Einsatz welches genau das macht. Funktioniert wunderbar)
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 27. Feb 2008, 11:56
Und was machst du, wenn ich Enter drücke?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#10

Re: Benachrichtigung beim Drücken eines fremden Buttons?

  Alt 27. Feb 2008, 12:14
Zitat von sirius:
Und was machst du, wenn ich Enter drücke?
Das darfst du nicht *g*
In meinem Fall wird nur geklickt und somit muss ich dieses Event nicht abfangen.
Thomas
  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 06:23 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