Vă mulțumim pentru susținere

Poate un dll Windows să-și regăsească propriul nume de fișier?

Un fișier exe Windows are acces la șirul de comandă care a invocat-o, inclusiv calea și numele fișierului. de exemplu. C: \ MyApp \ MyApp.exe --help .

Dar acest lucru nu este valabil pentru un DLL invocat prin LoadLibrary . Stie cineva de o modalitate de a găsi un DLL care este calea și numele fișierului?

În mod specific, mă interesează o soluție Delphi, dar bănuiesc că răspunsul ar fi cam la fel pentru orice limbă.

0
adăugat editat

1 răspunsuri

Cred că căutați 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;

Nu a fost testat, a fost ceva timp de cand am lucrat cu Delphi :)

0
adăugat
SysUtils are GetModuleName - încă de la D7, cred.
adăugat autor Ondrej Kelle
Începând cu Delphi XE, GetModuleName este definit în unitatea System.pas
adăugat autor menjaraz
În Delphi 6, în uses este necesară Windows pentru definiția MAX_PATH .
adăugat autor w5m