Я просто пытаюсь получить информацию о модуле, основанную на строке, которая вполне может быть чем-то вроде «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 *» несовместим с параметром типа «LPCWSTR» появляется в GetModuleHandle.
Теперь я попробовал множество шагов, таких как:
Перейдите в Свойства проекта → Свойства конфигурации → Набор символов и установите его в Использовать многобайтовый набор символов а не юникод. Я видел, как это помогает другим людям, но это не помогло мне.
Кастинг szModule, как (LPCWSTR)szModule
, Это привело к успешной сборке программы, однако она не работала так, как задумывалось.
Использование юникода путем замены параметра статическим L"somefile.exe"
, Это работало отлично, однако, само собой разумеется, это не очень практично.
Мой вопрос: как я могу сделать GetModuleHandle(szModule)
компилировать, если szModule
имеет тип char*
?
Я использую Visual Studio 2015, если это поможет.
Я не думаю, что делает GetModuleHandle(szModule)
иметь будущее это хорошая идея.
Попробуйте использовать GetModuleHandleA(szModule)
вместо char *szModule;
,
Других решений пока нет …