Как передать char * в функцию GetModuleHandle?

Я просто пытаюсь получить информацию о модуле, основанную на строке, которая вполне может быть чем-то вроде «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.

Теперь я попробовал множество шагов, таких как:

  1. Перейдите в Свойства проекта → Свойства конфигурации → Набор символов и установите его в Использовать многобайтовый набор символов а не юникод. Я видел, как это помогает другим людям, но это не помогло мне.

  2. Кастинг szModule, как (LPCWSTR)szModule, Это привело к успешной сборке программы, однако она не работала так, как задумывалось.

  3. Использование юникода путем замены параметра статическим L"somefile.exe", Это работало отлично, однако, само собой разумеется, это не очень практично.

Мой вопрос: как я могу сделать GetModuleHandle(szModule) компилировать, если szModule имеет тип char*?

Я использую Visual Studio 2015, если это поможет.

1

Решение

Я не думаю, что делает GetModuleHandle(szModule) иметь будущее это хорошая идея.

Попробуйте использовать GetModuleHandleA(szModule) вместо char *szModule;,

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector