作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我得到了这段代码:
DWORD64 GetModuleBase(HANDLE hProc, string &sModuleName)//For 64bit process
{
HMODULE *hModules;
hModules = 0;
char szBuf[50];
DWORD cModules = 0;
DWORD64 dwBase = 0;
EnumProcessModules(hProc, hModules, 0, &cModules);
hModules = new HMODULE[cModules / sizeof(HMODULE)];
if (EnumProcessModules(hProc, hModules, cModules / sizeof(HMODULE), &cModules)) {
for (int i = 0; i < cModules / sizeof(HMODULE); i++) {
if (GetModuleBaseName(hProc, hModules[i], szBuf, sizeof(szBuf))) {
if (sModuleName.compare(szBuf) == 0) {
dwBase = (DWORD64)hModules[i];
break;
}
}
}
}
delete[] hModules;
return dwBase;
}
这行失败告诉我 char* 与 LPWSTR 不兼容
if (GetModuleBaseName(hProc, hModules[i], szBuf, sizeof(szBuf))) {
我已经在另一个项目中使用它很长时间了,它运行良好,但我最近搬到了一个新的项目中,但我遇到了这个问题。不知道该怎么办。在 szbuf 旁边添加 (LPWSTR) 只会使 dll 崩溃。
我正在使用 VS 2013
最佳答案
尝试使用 GetModuleBaseNameA
(在尾部添加“A”)。
GetModuleBaseNameA
显式使用 ANSI 字符,与 GetModuleBaseName
不同,后者是 GetModuleBaseNameA
或 GetModuleBaseNameW
的宏.
关于c++ - GetModuleBaseName 不接受 char* 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798185/
我得到了这段代码: DWORD64 GetModuleBase(HANDLE hProc, string &sModuleName)//For 64bit process { HMODULE *hMo
我是一名优秀的程序员,十分优秀!