获取exe和dll路径

时间:2021-07-05 03:41:51

获取exe和dll路径  

2011-12-28 09:52:11|  分类:VC—小技巧 |  标签: |字号 订阅

 // TODO: 在此添加额外的初始化代码
 CString SetupPath;
 GetExePath(SetupPath);  //获取程序当前路径
 CString config_userconfig=SetupPath+_T("users\\userconfig.cfg");

 

////////////////////////////////////////////////////////////////////////////////////////////
//函数名称:GetPath
//说       明: 获取程序的路径
//入       参:
//出       参: strPath目录路径
//说       明:
////////////////////////////////////////////////////////////////////////////////////////////
void CTestDlg::GetExePath(CString& strPath)
{
 TCHAR szFull[_MAX_PATH];
 TCHAR szDrive[_MAX_DRIVE];
 TCHAR szDir[_MAX_DIR];
 ::GetModuleFileName(NULL, szFull, sizeof(szFull)/sizeof(TCHAR));
 _tsplitpath(szFull, szDrive, szDir, NULL, NULL);
 _tcscpy(szFull, szDrive);
 _tcscat(szFull, szDir);
 strPath = CString(szFull);
}


//////////////////////////////////////////////////////////////////////

DLL:Demo.dll

/////////////////////////////////////////////////////////////////////

 CString strFilePath;

  TCHAR tzPath[MAX_PATH+sizeof(TCHAR)] = {0};
  GetModuleFileName(::GetModuleHandle(_T("Demo")), tzPath, MAX_PATH);
  lstrcpy( _tcsrchr(tzPath, _T('\\'))+ 1, _T("file.xml"));
  strFilePath = tzPath;

 

 

  1. #include<stdio.h>   
  2. #include<Windows.h>   
  3. #include "tchar.h"   
  4.   
  5. char *THCAR2char(TCHAR* tchStr)     
  6. {     
  7. int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算一个字符,因此不用普通计算长度     
  8. char* chRtn = new char[iLen+1];    
  9. wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值     
  10. return chRtn;     
  11. }   
  12.   
  13. int main()  
  14. {  
  15.     TCHAR szFilePath[MAX_PATH];  
  16.     DWORD szRet = ::GetModuleFileName(NULL, szFilePath, MAX_PATH);  
  17.     char *pFilePath=THCAR2char(szFilePath);  
  18.     if(szRet)  
  19.     {  
  20.         printf("FilePath=%s\n",pFilePath);  
  21.     }else{  
  22.         printf("Failed\n");  
  23.     }  
  24.     return 0;  
  25.   
  26. }  

       

       

       TCHAR szFilePath[MAX_PATH]; 
       DWORD szRet = ::GetModuleFileName(NULL, szFilePath, MAX_PATH); 

       CString cstrFilePath = szFilePath;
       int nPos = cstrFilePath.ReverseFind('\\');

       cstrFilePath = cstrFilePath.Left(nPos);

       cstrFilePath += "\\XXXXX";