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 |
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, ...? |
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.
|
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.
|
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.
|
Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
Form2, Form3 etc. sind auch Toplevel-Fenster.
|
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. |
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.
|
Re: Aus der DLL heraus das Handle der Hostanwendung ermittel
Dan injeziere doch das Handle mit :cyclops:
|
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 01:59 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