2008-08-05 22 views
25

एक विंडोज एक्सई फ़ाइल के पास कमांड स्ट्रिंग तक पहुंच है जिसने इसे पथ और फ़ाइल नाम सहित शामिल किया है। जैसे। C:\MyApp\MyApp.exe --helpक्या विंडोज़ डीएल अपना खुद का फाइलनाम पुनर्प्राप्त कर सकता है?

लेकिन यह LoadLibrary के माध्यम से एक डीएल के लिए ऐसा नहीं है। क्या किसी को यह पता लगाने के लिए एक तरीका है कि उसका पथ और फ़ाइल नाम क्या है?

विशेष रूप से मुझे डेल्फी समाधान में दिलचस्पी है, लेकिन मुझे संदेह है कि उत्तर किसी भी भाषा के लिए काफी समान होगा।

उत्तर

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; 

untested है, हालांकि, कुछ समय के बाद से मैं डेल्फी के साथ काम किया :)

+5

SysUtils गया GetModuleName है - पहले से ही D7 के बाद से, मुझे लगता है। –

+2

डेल्फी एक्सई के रूप में, 'GetModuleName' को * System.pas * इकाई – menjaraz

+1

में परिभाषित किया गया है डेल्फी 6 में, 'MAX_PATH' की परिभाषा के लिए' उपयोग 'खंड में' विंडोज' आवश्यक है। – w5m