gpt4 book ai didi

c++ - GetModuleBaseName 不接受 char* 参数

转载 作者:太空狗 更新时间:2023-10-29 20:56:45 62 4
gpt4 key购买 nike

我得到了这段代码:

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 不同,后者是 GetModuleBaseNameAGetModuleBaseNameW 的宏.

关于c++ - GetModuleBaseName 不接受 char* 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798185/

62 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com