AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Handle einer Anwendung heraus finden um diese fernzusteuern
Thema durchsuchen
Ansicht
Themen-Optionen

Handle einer Anwendung heraus finden um diese fernzusteuern

Ein Thema von Friday · begonnen am 30. Mär 2018 · letzter Beitrag vom 31. Mär 2018
Antwort Antwort
Seite 1 von 2  1 2      
Friday

Registriert seit: 6. Mai 2008
97 Beiträge
 
Delphi 11 Alexandria
 
#1

Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 30. Mär 2018, 12:57
Hallo,
zu diesem Thema gibt es bereits viele Threads, dennoch scheint das hier ein Spezielfall zu sein, den ich so noch nirgends gelesen habe.
Mit WinSpy habe ich mir den Code generieren lassen um die Buttons zu drücken die ich drücken wollte....und es funktionierte.
Der erste Schritt ist mit
wndMain := FindWindow('<Klassenname>','<Fenstertitel>'); das handle auszulesen und von dort an weiter in der Hierarchie bis zu den gewünschten Steuerelementen zu kommen.

Nachdem ich die Remote-Anwendung neu gestartet habe, ging es aber nicht mehr, denn bei jedem Neustart der Anwendung ändert sie ihren Klassennamen(!).
Dieser ist sowas wie 'Afx:00400000:b:00010007:00000006:172A11EF'.

Und wenn ich keinen Klassennamen angebe (also nil), dann bekomme ich ein anderes Handle zurück mit dem der Rest auch nicht mehr funktioniert.

Wie schaffe ich es dennoch ohne den Klassennamen wissen zu können das richtige handle zu bekommen?
danke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#2

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 30. Mär 2018, 13:02
bekomme ich ein anderes Handle
MSDN-Library durchsuchenFindWindowEx oder MSDN-Library durchsuchenEnumWindows

PS, Google sagt:
https://msdn.microsoft.com/en-us/library/btbxa0ad.aspx
https://www.experts-exchange.com/que...omponents.html
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 30. Mär 2018, 13:04
Wenn die Anwendung ihren Fenstertitel nicht ändert, dann eventuell FindWindow ohne Klassenname, nur mit Fenstertitel

Oh, hab gerade in #1 gesehen, dass es dann nicht funktioniert.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 30. Mär 2018, 14:07
Vergiss es dynamisches wechseln des Klassen namens verhindert ein Auffinden des Fensters.
Habe ich früher mal mit UEDIT versucht das Programm macht genau das selbe.
Zumindest macht es keinen sinn da etwas speichern zu wollen weil nicht fix.

gruss

Geändert von EWeiss (30. Mär 2018 um 14:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 30. Mär 2018, 17:17
Nur so ein Gedanke und leider etwas umständlich: mit EnumWindows alle Top-Level-Fenster durchgehen, mit GetWindowThreadProcessID die zugehörige ProzessID ermitteln, die man dann für CreateToolHelp32 verwenden kann, um die zugehörige Exe herauszufinden. Den Dateinamen muss man dazu natürlich wissen. Ob das so klappt, habe ich nicht versucht, aber einen Versuch ist es wert.
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 Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 30. Mär 2018, 18:58
Alternativ könntest du das Programm auch über dein eigenes Tool starten, eine DLL injecten und dann direkt die gewünschten Operationen ausführen. Die Handles bekommst du dann z.B. indem du MSDN-Library durchsuchenCreateWindow oder sowas wie MSDN-Library durchsuchenRegisterClass hookst.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 30. Mär 2018, 20:58
Alternativ könntest du das Programm auch über dein eigenes Tool starten, eine DLL injecten und dann direkt die gewünschten Operationen ausführen. Die Handles bekommst du dann z.B. indem du MSDN-Library durchsuchenCreateWindow oder sowas wie MSDN-Library durchsuchenRegisterClass hookst.
Wie schon gesagt da du selber weist das sich das Handle immer ändert wird es ohne Hook wie hier vorgeschlagen nicht funktionieren.
Selbst wenn du die Anwendung selbst startest und somit die Kontrolle darüber hast wird es ohne Hook nichts nutzen.

Aber.. habe es damit selbst schon versucht und sein lassen weil es die Anwendung ausreizt die hat mehr mit dem Hook zu tun als mit anderen Dingen.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 30. Mär 2018, 23:03
Nach Ostern such ich Dir eine Funktion raus, die nach dem .exe Prozess sucht und Dir dessen Handles gibt.
Solange sich der .exe Name nicht auch jedesmal ändert, klappt es.
Das Problem was Du dann lösen musst ist folgendes, finde heraus welches Handle das gesuchte ist, meine Funktion liefert nur alle mit dem Prozess verbundenen.
Falls Dir sowas weiterhelfen kann such ich Montag mal.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Friday

Registriert seit: 6. Mai 2008
97 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 31. Mär 2018, 09:17
Nach Ostern such ich Dir eine Funktion raus, die nach dem .exe Prozess sucht und Dir dessen Handles gibt.
Solange sich der .exe Name nicht auch jedesmal ändert, klappt es.
Das Problem was Du dann lösen musst ist folgendes, finde heraus welches Handle das gesuchte ist, meine Funktion liefert nur alle mit dem Prozess verbundenen.
Falls Dir sowas weiterhelfen kann such ich Montag mal.
Danke, aber das macht die Funktion hier schon: https://www.delphi-treff.de/tipps-tr...mens-erhalten/

Jedoch erhalte ich damit auch nicht das gesuchte Handle.
Ich hatte dann vermutet dass mein gesuchtes Handle ein Child-Handle ist dass ich mit EnumChildWindows raus kriege, doch ein solch erstellter Callback wird nie aufgerufen...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Handle einer Anwendung heraus finden um diese fernzusteuern

  Alt 31. Mär 2018, 09:36
Und wenn Du den Code dahingehend erweiterst, dass er nicht beim ersten gefundenen Fenster aufhört, sondern die ermittelten Fensterhandles in einer Liste ablegt? Es kann ja mehrere Fenster je Prozess geben, evtl. findest Du nur das falsche.
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
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 08:36 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