VC++6.0 MFC获取当前工作路径和可执行文件路径

1. 获取Debug或Release所在的路径  
CString GetModuleDir()   
{   
 HMODULE module = GetModuleHandle(0);   
 char pFileName[MAX_PATH];   
 GetModuleFileName(module, pFileName, MAX_PATH);   
   
 CString csFullPath(pFileName);   
 int nPos = csFullPath.ReverseFind( _T('\\') );   
 if( nPos < 0 )   
  return CString("");   
 else   
  return csFullPath.Left( nPos );   
}  
  
   
  
2. 获取当前工作路径(dsp所在路径)  
  
//获取工作路径  
CString GetWorkDir()   
{    
 char pFileName[MAX_PATH];   
 int nPos = GetCurrentDirectory( MAX_PATH, pFileName);   
   
 CString csFullPath(pFileName);    
 if( nPos < 0 )   
  return CString("");   
 else   
  return csFullPath;   
}  

路径分解函数:

    char a_sFileName[256];     
    GetModuleFileName(NULL,a_sFileName,256);   
    CString sPath;  
  
    CString sDrive;//磁盘名  
    CString sDir;//文件路径  
    CString sFileName;//取出文件路径后的文件名  
    CString sExt;//文件扩展名  
  
    char drive[_MAX_DRIVE];//磁盘名  
    char dir[_MAX_DIR];//路径名  
    char fname[_MAX_FNAME];//文件名  
    char ext[_MAX_EXT];//扩展名  
  
    _splitpath(a_sFileName, drive, dir, fname, ext );  
  
    sDrive.Format("%s",drive);  
    sDir.Format("%s",dir);  
    sFileName.Format("%s",fname);  
    sExt.Format("%s",ext);  
  
    sPath= sDrive + sDir + sFileName + a_sSuffix + sExt;  

    CString strText;
    TCHAR exepath[MAX_PATH]={0};
    ::GetModuleFileName(NULL,exepath,MAX_PATH);
    strText=exepath;
    strText=strText.Left(strText.ReverseFind(''''));
    strText += _T("");

GetModuleFileName是一个API函数,通过这个函数,可以获得运行的当前程序的EXE文件所在的路径。直接将这几句代码,在MFC中封装成一个函数即可。

GetModuleFileName第一个参数是示例句柄,设为NULL则表示当前执行的EXE的。第二个参数就是接受得到的可执行路径的字符串缓冲。第三个是缓冲的大小。大小就是声明的缓冲的大小,以TCHAR为单位。

strText.Left()是CString提供的字符串截取函数,具体的可以查看MSDN或者本站其他相关文章。

ReverseFind()是CString提供的字符串查找函数,具体的可以查看MSDN或者本站其他相关文章。

转自:https://blog.csdn.net/xjujun/article/details/8054990

猜你喜欢

转载自blog.csdn.net/weixin_40026797/article/details/84329912
今日推荐