1

我只是想根据一个字符串来获取模块信息,这个字符串很可能是“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”类型的参数不兼容。

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

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

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

  3. 通过将参数替换为 static 来使用 unicode L"somefile.exe"。然而,这非常有效,不用说它不是很实用。

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

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

4

1 回答 1

2

我不认为创造GetModuleHandle(szModule)未来是一个好主意。

尝试GetModuleHandleA(szModule)使用char *szModule;.

于 2015-09-25T03:16:32.650 回答