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

时间:2015-09-25 03:13:26

标签: c++ unicode wchar-t char-pointer lpcwstr

我只是试图根据字符串来获取模块信息,这些字符串非常类似于" 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 *"类型的错误参数与类型&#34的参数不兼容; LPCWSTR" 出现在GetModuleHandle中。

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

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

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

  3. 通过将参数替换为静态L"somefile.exe"来使用unicode。然而,这完全奏效,不用说它不太实用。

  4. 我的问题是:如果GetModuleHandle(szModule)的类型为szModule,我该如何编译char*

    我使用Visual Studio 2015,如果有帮助的话。

1 个答案:

答案 0 :(得分:2)

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

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