Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Aus der DLL heraus das Handle der Hostanwendung ermitteln? (https://www.delphipraxis.net/102504-aus-der-dll-heraus-das-handle-der-hostanwendung-ermitteln.html)

hitzi 30. Okt 2007 08:09


Aus der DLL heraus das Handle der Hostanwendung ermitteln?
 
Hallo,

gibt es eine Möglichkeit in einer DLL das Handle der Anwendung herauszufinden, welche eben diese DLL geladen hat?

Gruss

SirThornberry 30. Okt 2007 08:15

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
es gibt nicht DAS handle der Hauptanwendung, zumindest nicht das Fensterhandle.
Was genau willst du denn? das Prozesshandle, alle Fensterhandles, die HINSTANCE, ...?

hitzi 30. Okt 2007 08:20

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
Das Toplevel Window Handle möchte ich gern ermitteln. Ich möchte es umgehen, die Fenstercaption an die DLL zu übergeben, um dann mit FindWindowA das Handle zu ermitteln.

SirThornberry 30. Okt 2007 16:54

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
ein Toplevelfenster? Hmm, sowas gibts nicht wirklich so weit ich weiß. du musst ja auch nicht die Fenstercaption übergeben, du kannst auch direkt das Handle an die DLL übergeben.

Apollonius 30. Okt 2007 16:57

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
Mir fiele spontan noch ein, mit EnumWindows alle Top-Level-Fenster zu enumerieren und dann mit GetWindowThreadProcessId zu prüfen, welche der Host-Anwendung gehören.

SirThornberry 30. Okt 2007 16:59

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
Form2, Form3 etc. sind auch Toplevel-Fenster.

hitzi 30. Okt 2007 17:28

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
Das Problem an der ganzen Geschichte ist, dass es eine DLL ist, welche in einen anderen Prozess injeziert wird. Ich brauche dann in dieser DLL das Handle zu der Anwendung, welche die DLL in den Prozess injeziert hat und nicht das Handle des Prozesses in dem sich die DLL nach dem Injenzieren befindet.
Im Moment schreibe ich in CSIDL_APPDATA eine in bestimmte Datei in der dann das entsprechende Handle geschrieben ist. Das funktioniert bei einer Anwendung ganz gut. Aber später soll das entsprechende Programm auch mehrmals gestartet werden können und dann könnte es mit nur einer Datei Probleme geben. Die idealste Lösung wäre, dass die DLL von sich aus das richtige Handle ermitteln kann.

Apollonius 30. Okt 2007 17:36

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
Das erfahren wir aber früh. :zwinker: Wie injizierst du denn die DLL? Pauschal kann man aber sagen, dass die DLL es eigentlich nicht wissen kann, wer sie injiziert hat.

sirius 30. Okt 2007 17:52

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
Dan injeziere doch das Handle mit :cyclops:

hitzi 30. Okt 2007 19:11

Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
 
Leider steig ich da nicht durch, wie man bei diesen Vorgang einen Parameter mit übermitteln kann. Ich verwende die uallCollection zum Injezieren. Wenn es gar nicht geht, werd ich wohl das Handle über WM_COPYDATA an die DLL schicken. Aber noch hab ich Hoffnung das eleganter zu lösen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr.
Seite 1 von 2  1 2      

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