MFC 获得当前exe文件的路径
2013-01-12 16:32
232 查看
在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
在这里采用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
相关文章推荐
- MFC 获得当前项目的.exe文件路径
- VC 获得当前应用程序所在路径(exe文件的路径)
- VC 获得当前应用程序所在路径(exe文件的路径)
- 用MFC实现代码获取当前EXE 执行的绝对路径,用于扩展相对路径扩展,以及计算文件大小功能
- [MFC]获取EXE执行文件所在的路径
- C#(WPF)程序将Debug中的.exe文件放入注册表中启动,获取错误的当前路径--解决方案
- linux shell脚本获得当前文件路径
- MFC浏览文件夹,浏览保存文件, 获取当前路径
- MFC程序中将软件打包后,setup.exe文件自己电脑运行正常,别人电脑显示找不到文件路径
- java中获得当前文件路径
- 在指定路径创建文件夹, 获取EXE文件的当前目录
- mfc 获取当前工作路径,获取当前exe绝对路径,设置当前工作路径的函数
- mfc 获取当前exe的路径
- MFC 获取当前工作路径和可执行文件路径
- 1.如何获得当前文件路径
- java获得当前文件路径
- VC中获取当前exe文件运行路径
- java如何获得当前文件路径
- C++ 获得当前执行文件的路径
- java获得当前文件路径