VC 获取程序当前路径

作者在 2008-09-04 10:48:17 发布以下内容
//获取当前程序的完整路径,包括程序名  
  CString   szPath;  
  GetModuleFileName(NULL,szPath.GetBuffer(MAX_PATH),MAX_PATH);  
  szPath.ReleaseBuffer();  
   
  //不包括程序名 ,可放在你的APP文件类里面 
  CString   CXXXXXXApp::GetCurDir()  
  {  
    TCHAR   sDrive[_MAX_DRIVE];  
    TCHAR   sDir[_MAX_DIR];  
    TCHAR   sFilename[_MAX_FNAME],Filename[_MAX_FNAME];  
    TCHAR   sExt[_MAX_EXT];  
    GetModuleFileName(AfxGetInstanceHandle(),   Filename,   _MAX_PATH);  
    _tsplitpath(Filename,   sDrive,   sDir,   sFilename,   sExt);  
    CString   homeDir(CString(sDrive)   +   CString(sDir));  
    int   nLen   =   homeDir.GetLength();  
    if(homeDir.GetAt(nLen-1)   !=   _T('\\'))  
      homeDir   +=   _T('\\');  
    return   homeDir;  
  }
其中:void   _splitpath(  
        const   char   *path,  
        char   *drive,  
        char   *dir,  
        char   *fname,  
        char   *ext    
  );  
  void   _wsplitpath(  
        const   wchar_t   *path,  
        wchar_t   *drive,  
        wchar_t   *dir,  
        wchar_t   *fname,  
        wchar_t   *ext    
  );  

//获得程序当前的路径  
  char   szWorkDir[256];  
  _getcwd(   szWorkDir,   256   );
技术 | 阅读 26382 次
文章评论,共1条
vfdff(作者)
2008-09-19 18:05
1
char fullPath[100];&nbsp;&nbsp;&nbsp;<br />
GetModuleFileName的第一个参数是HINSTANCE,你可以利用AfxGetInstanceHandle()来获得这个参数的取值。另外,22作为文件名返回的长度可能略小了。你可以这样:<br />
&nbsp;&nbsp;&nbsp; GetModuleFileName(AfxGetInstanceHandle(), fullPath, ,22);<br />
&nbsp;&nbsp;&nbsp; 当然得到的fullPath还包括EXE名,你需要先去掉这部分,然后才能得到目录。
游客请输入验证码
浏览1944023次