Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Button in Fremdanwendung erzeugen (https://www.delphipraxis.net/19812-button-fremdanwendung-erzeugen.html)

the-networker 9. Apr 2004 10:48


Button in Fremdanwendung erzeugen
 
Ist es möglich in einer Fremdanwendung einen Button oder
auch andere Controls zu erzeugen.

vielen Dank
The-Networker

DaFox 9. Apr 2004 12:28

Re: Button in Fremdanwendung erzeugen
 
Hi,

das ist möglich. Du musst die WndProc des Zielfensters überschreiben. Stichwort: Hier im Forum suchenSubclassing

Gruß,
Markus

the-networker 11. Apr 2004 07:28

Re: Button in Fremdanwendung erzeugen
 
Hallo Markus,

war jetzt ein wenig im Osterstress.

Wie kann ich denn das WND-Proc überschreiben.
Ich habe bis jetzt durch enumerieren den Application.Handle des
Zielprogrammes herausgefunden.

Gruß

Uwe

Luckie 11. Apr 2004 13:51

Re: Button in Fremdanwendung erzeugen
 
Ich bin mir gar nicht so sicher, ob das überhaupt geht unter NT ff., weil du ja in den anderen Prozess rein musst.

Den Button bekommst du mit MSDN-Library durchsuchenCreateWindow hin. Und die WndProc kannst du mit MSDN-Library durchsuchenSetWindowLOng umbiegen.

Die Forensuche könnte auch Ergebnisse liefern, ich meine Assarabad hätte sich dazu schon mal geäußert.

the-networker 12. Apr 2004 09:01

Re: Button in Fremdanwendung erzeugen
 
Hallo Lucky,

schönen Dank für die Anregungen.
Ich werde jetzt versuchen die unterschiedlichen Ansätze auszuprobieren.
Wenn ich nicht weiterkomme würde ich dieses Thema gerne noch einmal hier
reinstellen.

Gruß
Uwe

TheXception 12. Apr 2004 13:29

Re: Button in Fremdanwendung erzeugen
 
das mit dem createwindow läuft ja ganz gut aber wie geht des mit dem SetWindowlong? Kann da jemand ein beispiel geben?

DaFox 12. Apr 2004 20:56

Re: Button in Fremdanwendung erzeugen
 
Hi,

Zitat:

Zitat von KeyCode008
das mit dem createwindow läuft ja ganz gut aber wie geht des mit dem SetWindowlong? Kann da jemand ein beispiel geben?

Beispiele sollten hier im Forum zu finden sein.

Window procedure umbiegen:
Code:
// alte WndProc speichern
// zum "Beenden" wird später wieder alte WndProc zurückgesetzt
oldProc := GetWindowLong(TargetWnd, GWL_WNDPROC);
// alte mit unserer neuen, eigenen WndProc überschreiben
SetWindowLong(TargetWnd, GWL_WNDPROC, Integer(@NewWndProc));
Window procedure zurücksetzen:
Code:
  SetWindowLong(TargetWnd, GWL_WNDPROC, oldProc);
Wie Luckie aber schon angemerkt hat, muss das im Addressraum der Zielanwendung geschehen. Wir müssen diesen (Pseudo-)Code also in den anderen Addressraum Hier im Forum sucheninjezieren. Oft werden dazu Hooks und MMFs benutzt. Hier im Forum suchenLuckieSpy

Gruß,
Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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