Может ли библиотека DLL Windows получить свое собственное имя файла?
Вопрос
Исполняемый файл Windows имеет доступ к командной строке, которая его вызвала, включая его путь и имя файла.например. C:\MyApp\MyApp.exe --help
.
Но это не так для библиотеки dll, вызываемой через LoadLibrary
.Кто-нибудь знает способ для библиотеки dll узнать, каков ее путь и имя файла?
В частности, меня интересует решение на Delphi, но я подозреваю, что ответ был бы практически одинаковым для любого языка.
Решение
Я думаю, вы ищете 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;
Хотя я и не тестировал, прошло некоторое время с тех пор, как я работал с Delphi :)
Не связан с StackOverflow