Kan en Windows dll hente sin egen filnavnet?

stemmer
27

En Windows exe-filen har tilgang til kommandostrengen som påberopes det, inkludert dens bane og filnavn. f.eks. C:\MyApp\MyApp.exe --help.

Men dette er ikke så for en dll påberopes via LoadLibrary. Er det noen som vet om en måte for en dll for å finne ut hva dens bane og filnavn er?

Spesielt er jeg interessert i en Delphi løsning, men jeg mistenker at svaret ville være ganske mye den samme for alle språk.

Publisert på 05/08/2008 klokken 09:34
kilden bruker
På andre språk...                            


1 svar

stemmer
35

Jeg tror du leter etter 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;

Utestet skjønt, vært en stund siden jeg jobbet med Delphi :)

Svarte 05/08/2008 kl. 09:37
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more