怎样去掉GetModuleFileNameW函数获得exe文件名?

chenxidu 2008-05-17 11:56:35
怎样去掉GetModuleFileNameW函数获得exe文件名?

我就是只想得到exe所在的路径,然后这个路径和exe目录下的
另外一个文件组合

谢谢
...全文
846 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sec12563 2012-01-06
  • 打赏
  • 举报
回复
2楼的方法不错 我也是遇到这个问题 成功了
  • 打赏
  • 举报
回复
TCHAR szFilePath[MAX_PATH + 1]={0};
GetModuleFileName(NULL, szFilePath, MAX_PATH);// 可执行文件的全路径名
(_tcsrchr(szFilePath, _T('\\')))[1] = 0; //删除文件名,只获得路径字串
CString str_url = szFilePath;

CString strFile =str_url+ _T("\import_test.xls"); //需要绝对路径
mofeellassie 2010-05-14
  • 打赏
  • 举报
回复
{
char ProcessPath[MAX_PATHER] = "0";

GetModuleFileName(NULL,ProcessPath,MAX_PATHER);

string path = ProcessPath;

path = path.substr(0,path.find_last_of('\\')+1);

cout<<path.c_str()<<endl;
}
birchlin 2008-05-17
  • 打赏
  • 举报
回复
第一种简单!
healer_kx 2008-05-17
  • 打赏
  • 举报
回复
一般我都是第二种做法,第一种做法比较不严谨吧?
baihacker 2008-05-17
  • 打赏
  • 举报
回复
#include  <iostream>
#include <windows.h>
#include <cstring>
using namespace std;

int main(int argc, char* argv[])
{
char result[MAX_PATH];
int i=0;
GetModuleFileName(NULL, result, MAX_PATH);
while (result[i++]);
while (result[--i]!='\\');
result[++i] = 0;
strcat(result, "aaa.exe");
cout << result << endl;
return 0;
}
baihacker 2008-05-17
  • 打赏
  • 举报
回复
#include  <iostream>
#include <windows.h>
#include <cstring>
using namespace std;

int main(int argc, char* argv[])
{
char result[MAX_PATH];
GetCurrentDirectory(MAX_PATH, result);
strcat(result, "\\aaa.exe");
cout << result << endl;
return 0;
}
arong1234 2008-05-17
  • 打赏
  • 举报
回复
简单但是错误。假如程序可执行文件在C:\aaa\aa.exe,我进入命令行方式
cd c:\
aaa\aaa.exe

则上述代码得到的是c:\aaa.exe
你甚至可以使用快捷方式把当前目录指定到任何一个目录

[Quote=引用 4 楼 birchlin 的回复:]
第一种简单!
[/Quote]
arong1234 2008-05-17
  • 打赏
  • 举报
回复
当前目录!=可执行文件所在目录,你的代码是错误的

[Quote=引用 1 楼 baihacker 的回复:]
C/C++ code#include <iostream>
#include <windows.h>
#include <cstring>
using namespace std;

int main(int argc, char* argv[])
{
char result[MAX_PATH];
GetCurrentDirectory(MAX_PATH, result);
strcat(result, "\\aaa.exe");
cout << result << endl;
return 0;
}
[/Quote]
coolerhero 2008-05-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 coolerhero 的回复:]
PathRemoveFileSpac(buffer);
wcscat(buffer,L"xxx.exe");
[/Quote]
应该是:
PathRemoveFileSpac(buffer);
wcscat(buffer,L"\xxx.exe");
coolerhero 2008-05-17
  • 打赏
  • 举报
回复
PathRemoveFileSpac(buffer);
wcscat(buffer,L"xxx.exe");
stoneyrh 2008-05-17
  • 打赏
  • 举报
回复
wchar_t *XmlFliePath = wcsrchr(CurPath,L'\\') + 1;
chenxidu 2008-05-17
  • 打赏
  • 举报
回复
wchar_t CurPath[MAX_PATH] = {0};
GetModuleFileNameW(NULL,CurPath,MAX_PATH);
wchar_t *XmlFliePath = wcsrchr(CurPath,'\\') + 1;
wcscat(XmlFliePath,L"AllShouterPoints.xml");
m_xmlPoints.Open(XmlFliePath,TRUE,0);

这里,错在哪里了?

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧