首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么求取程序执行的路径名

2013-01-11 
求助:如何求取程序执行的路径名在c++中,如何求取程序执行的路径名?用GetModuleFileName得到e:\a\b\c\ee.ex

求助:如何求取程序执行的路径名
在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);

[解决办法]
引用:
引用:
PathAppend

需要

Minimum DLL Version shlwapi.dll version 4.71 or later
Custom Implementation No
Header shlwapi.h
Import library shlwapi.lib
Minimum operating systems Win……


我觉得用_tsplitpath通用性更好一点
[解决办法]
int main( int argc , char *argv[ ]);
argv[0]就是执行程序名e:\a\b\c\ee.exe。

若想得到e:\a\b\c\,可以自行去掉文件名。或者用boost::file_system.
[解决办法]
引用:
在c++中,如何求取程序执行的路径名?用GetModuleFileName得到e:\a\b\c\ee.exe,若只想得到e:\a\b\c\该如何做?除了用GetModuleFileName函数以外,还有其他的方法吗?
望高手指点,谢谢!

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;
}

热点排行