Pfad der DLL durch DLL selber ermitteln



  • Hallo!
    Ist es möglich, dass eine DLL selber ermitteln kann, in welchen Verzeichnis sie steht?

    Mit besten Grüßen, Lothar.



  • Servus,

    Probier mal das:

    /////////// Pfad erfassen /////////
    CString strPath = GetCommandLine();// Pfad + Name der Exe holen
    int pos = strPath.ReverseFind( '\\'); // letztes '\' finden
    strPath = strPath.Mid(1, pos-1); // Name der Exe abtrennen, so dass nur noch der Pfad übrig bleibt
    

    Weiss nicht ob das auch in der dll geht.....

    *winke*
    Hellsgore



  • Hallo!
    Dieser Lösungsvorschlag funktioniert nicht, da GetCommandLine auch in einer DLL den Pfad und Namen der EXE, die sie aufruft, zurückgibt. Dieses Verhalten ist logisch, da die DLL von Windows als ein Bestandteil der EXE behandelt wird.

    Mit besten Grüßen, Lothar.



  • GetModuleFileName



  • Hallo!
    Ja, mit GetModuleHandle geht es, und zwar folgendermaßen:

    TCHAR pathname[_MAX_PATH];
    HMODULE hModule = ::GetModuleHandle("TestDLL-2.dll");
    DWORD len = GetModuleFileName(hModule, pathname, sizeof(pathname)/sizeof(pathname[0]));
    

    Der String "TestDLL-2.dll" ist durch den Namen der jeweilig verwendeten DLL auszutauschen.
    Möchte man den Namen und Pfad des aufrufenden Programmes haben, ist der Parameter
    hModule auf NULL zu setzen.

    Danke, Lothar.


Anmelden zum Antworten