MFC 得到exe绝对路径

来源:互联网 发布:怎么淘宝发布宝贝视频 编辑:程序博客网 时间:2024/06/18 09:50

转载地址:http://blog.163.com/xupengfei08@126/blog/static/146842417201132965935602/

基本方法是调用一个函数:GetModuleFileName,这个函数会返回exe文件的路径,包括exe文件名,所以要做的事情就是把*.exe那段给去掉。代码如下:


CString 类名::GetFilePath() {     char  exepath[MAX_PATH];    CString  strdir,tmpdir;     memset(exepath,0,MAX_PATH);     GetModuleFileName(NULL,exepath,MAX_PATH);     tmpdir=exepath;     strdir=tmpdir.Left(tmpdir.ReverseFind('\\'));    return strdir; } 

另外两种:

方法一:
[code]
//得到帮助文件的路径
CString strFullName = AfxGetApp()->m_pszHelpFilePath;
//得到的是:X:\XXXX\XXX.hlp

//解析路径,得到当前运行程序所在目录
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];

_splitpath(strAppName, drive, dir, NULL,NULL);
CString strPath;
strPath.Format("%s%s", drive, dir);
//strPath即为得到的当前运行程序所在目录
[/code]
另外,AfxGetApp()->m_pszAppName 得到应用程序名称
AfxGetApp()->m_pszExeName 得到程序文件名,不包括扩展名

方法二:
得到全路径
TCHAR exeFullPath[MAX_PATH]; // MAX_PATH
GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径
也就是当前运行程序的全路径
利用方法一的解析路径的方法,即可得到程序所在路径。

GetModuleFileName函数原型
DWORD GetModuleFileName(
   HMODULE hModule,     // handle to module。将要得到的模块的句柄。如果是当前模块,NULL
   LPTSTR lpFilename,   // path buffer   得到的文件名。
   DWORD nSize          // size of buffer   一般MAX_PATH就可以了
);

原创粉丝点击