Kann eine Windows-DLL ihren eigenen Dateinamen abrufen?
Frage
Eine Windows-Exe-Datei hat Zugriff auf die Befehlszeichenfolge, die sie aufgerufen hat, einschließlich Pfad und Dateiname.z.B. C:\MyApp\MyApp.exe --help
.
Dies gilt jedoch nicht für eine DLL, die über aufgerufen wird LoadLibrary
.Kennt jemand eine Möglichkeit für eine DLL, ihren Pfad und Dateinamen herauszufinden?
Insbesondere interessiere ich mich für eine Delphi-Lösung, aber ich vermute, dass die Antwort für jede Sprache ziemlich gleich wäre.
Lösung
Ich glaube, Sie suchen nach GetModuleFileName.
http://www.swissdelphicenter.ch/torry/showcode.php?id=143:
{
If you are working on a DLL and are interested in the filename of the
DLL rather than the filename of the application, then you can use this function:
}
function GetModuleName: string;
var
szFileName: array[0..MAX_PATH] of Char;
begin
FillChar(szFileName, SizeOf(szFileName), #0);
GetModuleFileName(hInstance, szFileName, MAX_PATH);
Result := szFileName;
end;
Allerdings ungetestet, es ist schon einige Zeit her, seit ich mit Delphi gearbeitet habe :)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow