本来我也不知道的,但是看了一下Delphi源代码,
System.Pas中ParamStr函数部分,如下:
begin
if Index = 0 then
SetString(Result, Buffer, GetModuleFileName(0, Buffer, SizeOf(Buffer)))
......
end;
于是得到结论GetModuleFileName
Win32 文档中说明如下:
GetModuleFileName函数获取包含指定模块的可执行文件的完整路径和文件名。
Windows 95: 当应用程序版本号高于4.0并且长文件名有效时,
GetModuleFilename函数返回长文件名. 否则返回8.3格式的文件名。
DWORD GetModuleFileName(
HMODULE hModule, // 模块句柄
LPTSTR lpFilename, // 缓冲区指针
DWORD nSize // 缓冲区大小
);
参数
hModule
指定需要获取可执行文件名的模块. 如果为Null, GetModuleFileName
返回创建调用本函数的进程的文件名.
lpFilename
指定存放返回文件名的缓冲区。
nSize
指定缓冲区大小
在Delphi中
使用如下:
var
Buffer: array[0..260] of Char;
begin
....
GetModuleFileName(0, Buffer, SizeOf(Buffer))
...
end;