Я делаю внутриигровой интерфейс в библиотеке (dll), и мне нужна возможность как получать, так и удалять сообщения (не допускать их получения целевым процессом) в зависимости от разных условий в коде.
Кроме сообщений от мыши и клавиатуры мне больше ничего не нужно. Для этого есть два пути. Найдите какой-нибудь хук, который позволит мне получать сообщения и от мыши, и от клавиатуры, или поставьте два отдельных хука на мышь и клавиатуру, но кода будет гораздо больше, чем с одним хуком.
Я решил пойти первым путем и поставил хук WH_GETMESSAGE на сообщения потока, создавшего окно. Однако мои попытки заблокировать сообщение не увенчались успехом.
Код: Выделить всё
LRESULT CALLBACK messageHandler(int nCode, WPARAM wParam, LPARAM lParam)
{
return -1; // This works fine with WH_MOUSE or WH_KEYBOARD, but for some reason, with the WH_GETMESSAGE hook, the process still receives a message
}
DWORD WINAPI messageDispatcher(LPVOID thread)
{
hookHandle = SetWindowsHookEx(WH_GETMESSAGE, messageHandler, GetModuleHandle(nullptr), *reinterpret_cast(thread));
if (!hookHandle)
{
return GetLastError();
}
MSG message{};
while (GetMessage(&message, 0, 0, 0) > 0)
{
TranslateMessage(&message);
DispatchMessage(&message);
}
return 0;
}
Но если все же использование WH_GETMESSAGE не является плохой идеей, то помогите пожалуйста сделать так, чтобы я мог контролировать получение некоторых сообщений процессом (не разрешать их чтобы быть видимым процессом).
Подробнее здесь: https://stackoverflow.com/questions/702 ... getmessage
Мобильная версия