我只是想根据一个字符串获取模块信息,该字符串很可能是“somefile.exe”之类的东西。
MODULEINFO GetModuleInfo(char *szModule)
{
MODULEINFO modinfo = {0};
HMODULE hModule = GetModuleHandle(szModule);
if(hModule == 0)
return modinfo;
GetModuleInformation(GetCurrentProcess(), hModule, &modinfo, sizeof(MODULEINFO));
return modinfo;
}
GetModuleHandle 中出现错误参数类型“char *”与类型“LPCWSTR”的参数不兼容。
现在,我已经尝试了许多步骤,例如:
转至项目属性 → 配置属性 → 字符集,并将其设置为使用多字节字符集而不是 Unicode。我见过它对其他人有帮助,但对我来说却没有效果。
像
(LPCWSTR)szModule
一样转换 szModule。这使得程序构建成功,但是它没有按预期工作。通过将参数替换为静态
L"somefile.exe"
来使用 unicode。然而,这非常有效,但不用说它不是很实用。
我的问题是:如果 szModule
的类型为 char*
,如何使 GetModuleHandle(szModule)
编译?
如果有帮助的话,我正在使用 Visual Studio 2015。
最佳答案
我不认为让 GetModuleHandle(szModule)
拥有 future 是一个好主意。
尝试使用 GetModuleHandleA(szModule)
代替 char *szModule;
。
关于c++ - 如何将 char* 传递给 GetModuleHandle 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32774200/