如何将 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"。
现在,我尝试了很多步骤,例如:
转到项目属性 → 配置属性 → 字符集并将其设置为 使用多字节字符集 而不是 Unicode。我看到它对其他人有帮助,但对我没有用。
像 (LPCWSTR)szModule
一样转换 szModule。这使得程序构建成功,但是它没有按预期工作。
通过用静态 L"somefile.exe"
替换参数来使用 unicode。这非常有效,但是,不用说它不是很实用。
我的问题是:如果 szModule
是 char*
类型,我如何使 GetModuleHandle(szModule)
编译?
如果有帮助,我正在使用 Visual Studio 2015。
我不认为让 GetModuleHandle(szModule)
拥有未来是个好主意。
尝试使用 GetModuleHandleA(szModule)
代替 char *szModule;
。
我只是想根据一个很可能类似于 "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"。
现在,我尝试了很多步骤,例如:
转到项目属性 → 配置属性 → 字符集并将其设置为 使用多字节字符集 而不是 Unicode。我看到它对其他人有帮助,但对我没有用。
像
(LPCWSTR)szModule
一样转换 szModule。这使得程序构建成功,但是它没有按预期工作。通过用静态
L"somefile.exe"
替换参数来使用 unicode。这非常有效,但是,不用说它不是很实用。
我的问题是:如果 szModule
是 char*
类型,我如何使 GetModuleHandle(szModule)
编译?
如果有帮助,我正在使用 Visual Studio 2015。
我不认为让 GetModuleHandle(szModule)
拥有未来是个好主意。
尝试使用 GetModuleHandleA(szModule)
代替 char *szModule;
。