怎么求取程序执行的路径名
求助:如何求取程序执行的路径名
在c++中,如何求取程序执行的路径名?用GetModuleFileName得到e:\a\b\c\ee.exe,若只想得到e:\a\b\c\该如何做?除了用GetModuleFileName函数以外,还有其他的方法吗?
望高手指点,谢谢!
------解决方案--------------------
WCHAR szPath[MAX_PATH] = {};
GetModuleFileName(NULL, szPath);
PathAppend(szPath, L"..");
try...
------解决方案--------------------
------解决方案--------------------
我觉得用_tsplitpath通用性更好一点
------解决方案--------------------
int main( int argc , char *argv[ ]);
argv[0]就是执行程序名e:\a\b\c\ee.exe。
若想得到e:\a\b\c\,可以自行去掉文件名。或者用boost::file_system.
------解决方案--------------------
PathRemoveFileSpec
------解决方案--------------------
额,参考 healer_kx 和 VisualEleven 的提示,写了个测试例子,可以实现.谢谢各位,我权当学习~
在c++中,如何求取程序执行的路径名?用GetModuleFileName得到e:\a\b\c\ee.exe,若只想得到e:\a\b\c\该如何做?除了用GetModuleFileName函数以外,还有其他的方法吗?
望高手指点,谢谢!
------解决方案--------------------
WCHAR szPath[MAX_PATH] = {};
GetModuleFileName(NULL, szPath);
PathAppend(szPath, L"..");
try...
------解决方案--------------------
TCHAR tchBuffer[MAX_PATH ];
LPTSTR lpszCurDir;
lpszCurDir = tchBuffer;
GetCurrentDirectory(MAX_PATH , lpszCurDir);
MessageBox(lpszCurDir);
------解决方案--------------------
我觉得用_tsplitpath通用性更好一点
------解决方案--------------------
int main( int argc , char *argv[ ]);
argv[0]就是执行程序名e:\a\b\c\ee.exe。
若想得到e:\a\b\c\,可以自行去掉文件名。或者用boost::file_system.
------解决方案--------------------
PathRemoveFileSpec
------解决方案--------------------
额,参考 healer_kx 和 VisualEleven 的提示,写了个测试例子,可以实现.谢谢各位,我权当学习~
#include <Windows.h>
#include <stdio.h>
#include <Shlwapi.h>
#include <tchar.h>
#pragma comment(lib,"shlwapi.lib")
int main()
{
char chPath[MAX_PATH] = {0};
TCHAR szPath[MAX_PATH] = {0};
// 获取当前exe文件所在的路径
GetModuleFileName(NULL,szPath,MAX_PATH); // 如c:\test\tt.exe
WideCharToMultiByte(CP_ACP,0,szPath,MAX_PATH,chPath,MAX_PATH,NULL,NULL);
printf("the Path:%s\n",chPath); // c:\test\tt.exe
// 分离当前路径,获取目录
PathRemoveFileSpec( szPath ); // c:\test
WideCharToMultiByte(CP_ACP,0,szPath,MAX_PATH,chPath,MAX_PATH,NULL,NULL);
printf("the Directory:%s\n",chPath); // c:\test
return 0;
}