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

标签 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;
}

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

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

  1. 转至项目属性 → 配置属性 → 字符集,并将其设置为使用多字节字符集而不是 Unicode。我见过它对其他人有帮助,但对我来说却没有效果。

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

  3. 通过将参数替换为静态 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/

相关文章:

c++ - 如何在 Turbo C++ 中创建自定义角色

python - 将 StringIO 用于 ConfigObj 和 Unicode

java - 如何使用Java API解码HBase中的表情符号(unicode)?

c++ - 将 wchar_t 转换为 char C++

linux - linux 和 gcc 中的 16 位 wchar_t 支持

c++ - BFS 算法 - 具有约束步骤的网格上的最短步行

c++ - 多平台IDE

c++ - 为什么 push_back 和 emplace_back 组合在一起时会有不同的行为

android - 处理非英文 Unicode(如中文、日文)时,目标 API 28 中不正确的 EditText 行间距行为

c++ - 如何从 char 数组复制 wchar_t