在MFC编程中,有时候需要打开“当前exe文件所在目录中“的某些文件,或将文件写在当前exe所在目录下,那么怎么获得当前exe文件所在的路径呢?
在这里采用GetModuleFileName函数。
void CTestDlg::OnOK()
{
CString strPath;
char cPath[MAX_PATH];
//MAX_PATH是C语言运行时库中通过#define指令定义的一个宏常量,它定义了编译器所支持的最长全路径名的长度。
//在VC++6.0中, _MAX_PATH的值为260。
if(!GetModuleFileName( NULL, cPath, MAX_PATH ))//获取路径。例如:cPath="E:\\Test.exe"
{
printf("GetModuleFileName failed (%d)\n", GetLastError());
return;
}
strPath=cPath;//将char型路径复制到cstring类型中。例如:strPath="E:\\Test.exe"
strPath=strPath.Left(strPath.GetLength()-4)+"_log.txt";//将原来路径减去最右边4个字符,即".exe",再加上"_log.txt".例如:strPath="E:\\Test_log.txt"
}
/* 如果想获得某个正在运行的EXE或者DLL的全路径可以这样写代码GetModuleFileNameEx(hProcess,hInst,lpFile,MAX_PATH);//注意下缓冲区就行了。*/