Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#13

Re: Pfad der eigenen Anwendung - ohne Application. Param...

  Alt 7. Feb 2008, 22:38
Komplizierter wird es nur noch, wenn man die Situation hat, daß man den Pfad der DLL aus der aktuellen DLL haben will, man aber (weil bspw. ursprünglich aus einer Bibliothek stammend) hInstance (der DLL) nicht kennt, NULL nicht nutzen kann, GetModuleHandle(NULL) auch keinen Sinn macht. Die generischste und meines Erachtens nach beste Methode zum Ermitteln des Pfades des aktuellen Moduls (nicht der EXE selbst, sondern des Moduls in dem der Code ausgeführt wird) ist, eine statische Variable zu deklarieren (also nicht auf dem Stack ) und die Basisadresse des Moduls aus der Adresse dieser Variablen zu ermitteln. Alternativ zur statischen Variablen geht auch ein Pointer auf die aktuelle Funktion welche unten beschriebene beschriebene Methode implementiert.

Dazu wird MSDN-Library durchsuchenVirtualQuery benutzt. Erster Parameter ist die Adresse der statischen Variablen. Zweiter Parameter ist ein Zeiger auf eine MEMORY_BASIC_INFORMATION-Struktur, deren Member "BaseAddress" nach dem (erfolgreichen) Aufruf von MSDN-Library durchsuchenVirtualQuery nur noch in HMODULE/HINSTANCE gecastet werden muß und dann wirklich die korrekte Basisadresse enthält.

GetModuleFileName(HMODULE(mbi->BaseAddress), Puffer, Groesse);
  Mit Zitat antworten Zitat