我只是想基于一个字符串获取模块信息,该字符串很可能类似于“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;
}

类型“char *”的错误参数与GetModuleHandle中出现的类型“LPCWSTR”的参数不兼容。

现在,我尝试了许多步骤,例如:
  • 转到项目属性→配置属性→字符集,并将其设置为。使用多字节字符集而不是Unicode。我已经看到它可以帮助其他人,但是它对我没有帮助。
  • 将szModule转换为(LPCWSTR)szModule。这使程序成功构建,但是没有按预期工作。
  • 通过将参数替换为静态L"somefile.exe"来使用unicode。但是,这很完美,不用说这不是很实用。

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

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

    最佳答案

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

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

    关于c++ - 如何将char *传递给GetModuleHandle函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32774200/

    10-10 21:28