MFC 获得当前exe文件的路径

在MFC编程中,有时候需要打开“当前exe文件所在目录中“的某些文件,或将文件写在当前exe所在目录下,那么怎么获得当前exe文件所在的路径呢?

在这里采用GetModuleFileName函数。

 

函数原型:
DWORD GetModuleFileName(
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
 
函数参数说明:
1)hModule HMODULE 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前 应用程序全路径。
2)lpFileName LPTSTR 是你存放返回的名字的内存块的指针,是一个输出参数
3)nSize DWORD ,装载到缓冲区lpFileName的最大值
 
函数返回值:
如果返回为成功,将在lpFileName的 缓冲区当中返回相应模块的路径,如果所设的nSize过小,那么返回仅按所设置缓冲区大小返回相应字符串内容。
如果函数失败,返回值将为0,利用GetLastError可获得异常代码。
 
需要的头文件为:windows.h
 
实例:
假设exe文件名为 ”Test.exe“,将运行中的某个log文件保存在当前exe文件夹下,并改名为" Test_log.txt"
 

void CTestDlg::OnOK()
{
 CString strPath; 
 char cPath[MAX_PATH]; 
 //MAX_PATH是C语言运行时库中通过#define指令定义的一个宏常量,它定义了编译器所支持的最长全路径名的长度。 
 //在VC++6.0中, _MAX_PATH的值为260。

 
 if(!GetModuleFileName( NULL, cPath, MAX_PATH ))//获取路径。例如:cPath="E:\\Test.exe"  
 {  
  printf("GetModuleFileName failed (%d)\n", GetLastError());   
  return;  
 } 
 strPath=cPath;//将char型路径复制到cstring类型中。例如:strPath="E:\\Test.exe" 
 strPath=strPath.Left(strPath.GetLength()-4)+"_log.txt";//将原来路径减去最右边4个字符,即".exe",再加上"_log.txt".例如:strPath="E:\\Test_log.txt"
}

/* 如果想获得某个正在运行的EXE或者DLL的全路径可以这样写代码GetModuleFileNameEx(hProcess,hInst,lpFile,MAX_PATH);//注意下缓冲区就行了。*/

 

参考:http://baike.baidu.com/view/1285912.htm#6

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值