这里提供了四种方法,均可以实现在mfc下通过c++语言获取exe路径。排序没有优劣,可以选择适合自己的一种方法。
第一种:
TCHAR szFilePath[MAX_PATH + 1];
GetModuleFileName(NULL, szFilePath, MAX_PATH);
(_tcsrchr(szFilePath, _T('//')))[1] = 0;//删除文件名,只获得路径
CString str_url = szFilePath;
AfxMessageBox(str_url);
第二种:
CString path=AfxGetApp()->m_pszHelpFilePath;
CString str=AfxGetApp()->m_pszExeName;
path=path.Left(path.GetLength()-str.GetLength()-4);
第三种:
//Get Run-directory
TCHAR szLongPathName[_MAX_PATH];
GetModuleFileName(NULL, szLongPathName, _MAX_PATH);
RunDir = szLongPathName;
int nPos = RunDir.ReverseFind('//');
if(nPos != -1)
RunDir = RunDir.Left(nPos+1);
if(RunDir.IsEmpty()){
char szPath[144];
GetCurrentDirectory(144,szPath);
strcat(szPath,"//");
RunDir=szPath;
}
第四种:
#include < windows.h >
#include < string.h >
HINSTANCE hInst;
char szBuf[256];
char *p;
GetModuleFileName(hInst,szBuf,sizeof(szBuf));//拿到全部路径
p = szBuf;
while(strchr(p,'//')) //分离路径和文件名。
{
p = strchr(p,'//');
p++;
}
*p = '/0'; //路径在szBuf理了
转载自:http://blog.csdn.net/liquanhai/article/details/4345153