auto str_to_lower(const char* str) -> const char*
{
return _strlwr((char*)str);
}
auto get_module_handle(HANDLE process, const char* mod_name) -> HMODULE
{
MODULEENTRY32 me;
me.dwSize = sizeof me;
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, GetProcessId(process));
if (!snapshot)
return 0;
const char* module_name = str_to_lower(mod_name);
for (Module32First(snapshot, &me); Module32Next(snapshot, &me);)
{
const char* entry_module_name = str_to_lower(me.szModule);
if (!strcmp(entry_module_name, module_name))
break;
}
return reinterpret_cast<HMODULE>(me.hModule);
}