如何将 char* 传递给 GetModuleHandle 函数?

How to pass a char* to the GetModuleHandle function?

我只是想根据一个很可能类似于 "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 中出现错误 argument of type "char *" is incompatible with parameter of type "LPCWSTR"

现在,我尝试了很多步骤,例如:

  1. 转到项目属性 → 配置属性 → 字符集并将其设置为 使用多字节字符集 而不是 Unicode。我看到它对其他人有帮助,但对我没有用。

  2. (LPCWSTR)szModule 一样转换 szModule。这使得程序构建成功,但是它没有按预期工作。

  3. 通过用静态 L"somefile.exe" 替换参数来使用 unicode。这非常有效,但是,不用说它不是很实用。

我的问题是:如果 szModulechar* 类型,我如何使 GetModuleHandle(szModule) 编译?

如果有帮助,我正在使用 Visual Studio 2015。

我不认为让 GetModuleHandle(szModule) 拥有未来是个好主意。

尝试使用 GetModuleHandleA(szModule) 代替 char *szModule;