C++使用Windows API- GetModuleFileName获取可执行文件路径方法。
1、 使用GetModuleFileName()获取执行程序完整路径和名称:
// 返回值:获取到字符串大小
DWORD GetModuleFileName(
HMODULE hModule, // 模块的句柄,如果是当前模块,NULL
LPTSTR lpFilename, // 文件路径和名称
DWORD nSize // 获取字符串的最大长度
};
2、去掉后面的文件名称,得到完整路径:
从后向前查找字符'\',并将其后字符置为0,作为字符串结尾。
代码:
#include
#include
using namespace std;
bool GetExePath(TCHAR* filepath, const int& max_length) {
auto sz = GetModuleFileName(nullptr, filepath, max_length);
if (sz == 0)
return false;
for (int n = sz - 1; n > 0; n--) {
if (filepath[n] == TCHAR('\\')) {
filepath[n + 1] = 0;
break;
}
}
return true;
}
int main()
{
TCHAR filepath[512];
bool bret = GetExePath(filepath, 512);
if(!bret)
return -1;
wprintf_s(L"%s\n", filepath); // Unicode
//printf_s("%s\n", filepath); // Multi-byte
return 0;
}
如果包含
错误 C2760 语法错误: 意外标记 "标识符",应为 "类型说明符"
在“属性 -> C\C++ -> 语言”选项 下,将“符合模式”设为“否”。
————————————————
版权声明:本文为CSDN博主「cww_sh26」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cww_sh26/article/details/125248071