使用GetModuleFileName()函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CString CYFGCMApp::GetExecPath(void)
{
TCHAR szPathName[MAX_PATH];
memset(szPathName, 0, MAX_PATH);
if (0 == GetModuleFileName(NULL, szPathName, MAX_PATH))
{
return _T("");
}
CString rValue;
rValue = szPathName;
for (int i = rValue.GetLength(); i > 0; --i)
{
if ('\\' == rValue[i-1])
{
rValue = rValue.Left(i);
break;
}
}
return rValue;
}

原型及各参数解释

DWORD GetModuleFileName(
HMODULE hModule, // 获得hModule所指的文件的名字,当前程序传入NULL
LPTSTR lpFilename, // hModule在LoadLibrary之类的函数会返回,是一个句柄,用来标记这个文件资源。
DWORD nSize // lpFilename是你存放返回的名字的内存块的指针,是一个输出参数,nSize是这个内存块的大小,用于防止溢出。
);

返回值是用于指示是否发生错误的。 返回0时获取失败