Als dll herausfinden, wo die aufrufende exe liegt
-
Hi!
Ich habe ein Plugin als dll geschrieben.
Zur konfiguration möchte ich eine ini datei anlegen, die im Selben ordner wie die dll liegt. (da liegt auch die exe) Wie kann ich rausfinden wo die dll oder die exe - die die dll geladen hat - liegt?Danke im voraus
-
Achja, habs schon mit GetModuleFileName versucht. Wenn ich beim ersten parameter hModule übergebe (Das hModule was in der dllmain steht) sagt er mir:
error C2664: 'GetModuleFileNameA' : Konvertierung des Parameters 1 von 'void *' in 'struct HINSTANCE__ *' nicht moeglich
Eigentlich komisch, denn es ist doch ein HMODULE?
hier der Schnipsel:BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { char cFileName[256]; GetModuleFileName(hModule, cFileName,256); MessageBox(0,cFileName,0,0);
-
Wie wärsn mit MSDN lesen?
GetModuleFileName(NULL, cFileName, MAX_PATH) sollte gehen.
Btw bei WinAPI Funktionien sind eh alle Parameter DWORD, lass dich von diesen komischen Compilermeldungen in Bezug auf API-Funktionen also nicht verwirren.

-
Sorry hab gerade festgestellt, dass ich doch den pfad der dll brauche, da die exe ganz woanders liegt. Wenn ich NULL als ersten parameter übergebe erhalte ich den Pfad der exe. Geht das mit der dll auch irgendwie?
-
Probier doch einfach mal ein bisschen. Zum Beispiel:
GetModuleFileName(GetModuleHandle(NULL), Filename, MAX_PATH);
-
Normalerweise suche ich ja in der MSDN aber ich stehe im moment etwas unter zeitdruck, deswegen hab ich einfach mal im forum gefragt.
Danke es funktioniert.
Mit (HMODULE)hModule kann man es umwandeln, dann funktioniert es auch wie ich gerade festgestellt hab. 