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