Работа с хуками (SetWindowsHookEX и WH_GETMESSAGE)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Работа с хуками (SetWindowsHookEX и WH_GETMESSAGE)

Сообщение Anonymous »

Начну с описания, что именно мне нужно и зачем.
Я делаю внутриигровой интерфейс в библиотеке (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 мне подходит. Возможно, гораздо более опытные программисты скажут мне, что лучше сделать, например, два хука, WH_MOUSE и WH_KEYBOARD, а не использовать WH_GETMESSAGE.
Но если все же использование WH_GETMESSAGE не является плохой идеей, то помогите пожалуйста сделать так, чтобы я мог контролировать получение некоторых сообщений процессом (не разрешать их чтобы быть видимым процессом).

Подробнее здесь: https://stackoverflow.com/questions/702 ... getmessage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»