2008-08-05 2 views
25

Windows exe 파일은 경로 및 파일 이름을 포함하여 호출 한 명령 문자열에 액세스 할 수 있습니다. 예. C:\MyApp\MyApp.exe --help.Windows dll에서 자체 파일 이름을 검색 할 수 있습니까?

그러나 이것은 LoadLibrary을 통해 호출 된 dll의 경우에는 그렇지 않습니다. 누구든지 dll이 경로와 파일 이름이 무엇인지 알아내는 방법을 알고 있습니까?

특히 저는 델파이 솔루션에 관심이 있습니다. 그러나 그 대답은 모든 언어에서 거의 동일하다고 생각합니다.

답변

35

나는 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; 

테스트되지 않은, 내가 델파이와 함께 일하기 때문에 약간의 시간 :

+5

SysUtils를하고하는 것은 GetModuleName가있다 - 이미 D7 이후, 나는 생각한다. –

+2

델파이 XE에서'GetModuleName'은 * System.pas * 단위로 정의됩니다. – menjaraz

+1

델파이 6에서는'MAX_PATH'의 정의를 위해'uses' 절에'Windows'가 필요합니다. – w5m

관련 문제