2008-08-05 52 views
25

Un fichier Windows exe a accès à la chaîne de commande qui l'a appelée, y compris son chemin et son nom de fichier. par exemple. C:\MyApp\MyApp.exe --help.Une DLL Windows peut-elle récupérer son propre nom de fichier?

Mais ce n'est pas le cas pour une DLL invoquée via LoadLibrary. Est-ce que quelqu'un sait d'un moyen pour une DLL pour savoir ce que son chemin et le nom de fichier est?

Plus précisément, je suis intéressé par une solution Delphi, mais je pense que la réponse serait à peu près la même pour toutes les langues.

Répondre

35

Je pense que vous recherchez 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; 

Untested cependant, un certain temps que je travaillais avec Delphi :)

+5

SysUtils a GetModuleName - déjà depuis D7, je pense. –

+2

À partir de Delphi XE, 'GetModuleName' est défini dans l'unité * System.pas * – menjaraz

+1

Dans Delphi 6,' Windows' est requis dans la clause 'uses' pour la définition de' MAX_PATH'. – w5m