您的位置:首页 > 其它

获取执行文件路径

2015-09-18 07:58 351 查看

1.问题

原来代码在win7下可以正常运行在xp下无法输出

mymain.cpp

#include <stdio.h>
#include <Windows.h>
#include <string>

int main()
{
wchar_t pwbuf[MAX_PATH] = {0};
DWORD dwRet = GetModuleFileNameW(NULL, pwbuf, MAX_PATH);
if (dwRet != 0)
{
std::wstring strpath(pwbuf);
int npos = strpath.find_last_of(L'\\');
if (npos != -1)
strpath.erase(npos + 1);
wprintf(L"%s\n", strpath.c_str());
}

system("pause");
return 0;
}


2.解决

在xp下返回值为0成功,在win7下返回非0成功 修改后的代码

#include <stdio.h>
#include <Windows.h>
#include <string>

int main()
{
wchar_t pwbuf[MAX_PATH] = {0};
DWORD dwRet = GetModuleFileNameW(NULL, pwbuf, MAX_PATH);
#if (WINVER >= 0x0501)
if (dwRet != 0)
#else
if (dwaRet == 0)
#endif
{
std::wstring strpath(pwbuf);
int npos = strpath.find_last_of(L'\\');
if (npos != -1)
strpath.erase(npos + 1);
wprintf(L"%s\n", strpath.c_str());
}

system("pause");
return 0;
}


3.备注

有很多api微软在操作系统上的返回值可能有不同的含义,故除了看文档,还要看实际中的情况

http://download.csdn.net/detail/zhang_ruiqiang/9116267

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息