How to detect current executable file name?

eGust egustc at gmail.com
Mon Feb 18 00:21:35 PST 2013


On Monday, 18 February 2013 at 07:32:06 UTC, Jacob Carlborg wrote:
> On 2013-02-18 04:28, eGust wrote:
>> I need to locate the directory of current executable file, but 
>> I can't
>> find how to do that in Phobos. I tried 
>> core.runtime.Runtime.args[0], but
>> failed. Is there a standard method of Phobos to do that? I 
>> only know the
>> way of Windows (GetModuleFileName), but I think as a common 
>> task there
>> should be a platform-independent way to get it in the standard 
>> library.
>
> http://www.dsource.org/projects/tango/attachment/ticket/1536/process.d

Thanks for your reply. Does anyone know, will it be added into 
D2's standard library?

p.s. About the code, I don't know how it work on other platform, 
but on windows it will get a bad result if the path contains any 
non-ASCII character and D1's char[] is UTF-8 encoded. 
GetModuleFileNameA will get a string encoded as the ACP setting 
but not UTF-8. ASCII character is well compatible with most 
character sets (Windows' ACP setting) including UTF-8. But once a 
non-ASCII character in the path (like me, a Chinese user, a lot 
Chinese characters namd dirs on my PC, ACP is 936--GBK), it 
fails. Better way is to use GetModuleFileNameW and wchar[] then 
convert back to char[].
Anyway, thank you very much!


More information about the Digitalmars-d-learn mailing list