Я пытаюсь получить сообщения для другого приложения с помощью крючка Windows. Я установил крюк WH_GETMESSAGE с помощью SetWindowsHookEx. Это делается через DLL. В моей функции GetMsgProc (которая должна вызываться всякий раз, когда целевое приложение получает сообщение), я хочу принять действие на основе типа сообщения. Однако у меня возникают проблемы с этим утверждением if.Фильтрация сообщений Windows в функции фильтра крюка
LRESULT CALLBACK MessageHookProcedure(int code, WPARAM wParam, LPARAM lParam){
if(((MSG*)lParam)->message == WM_COMMAND){
MessageBox(NULL,L"The hook procedure was called",L"Test Window",MB_OK);
}
return CallNextHookEx(g_MessageHook,code,wParam,lParam);
}
По какой-то причине MessageBox никогда не создается. Я знаю, что приложение получает сообщения WM_COMMAND от Spy ++. Если я вынимаю оператор IF, MessageBox создается снова и снова, поскольку он получает множество сообщений.
Я думаю, что вы правы, я должен зацепить неправильное окно. Я проверю свою логику. Спасибо, что посмотрели мой код. – JohnG