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"%sn", filepath); // Unicode //printf_s("%sn", filepath); // Multi-byte return 0; }
如果包含
错误 C2760 语法错误: 意外标记 "标识符",应为 "类型说明符"
在“属性 -> CC++ -> 语言”选项 下,将“符合模式”设为“否”。



