我正试图阻止后台应用程序接收鼠标事件。尽管确保消息目标的句柄与前景窗口匹配,但是如果我将鼠标悬停在其上方,则后台应用程序仍会收到鼠标事件。
我也尝试过挂钩WH_MOUSE_LL,但是MSLLHOOKSTRUCT似乎没有提供足够的信息来对其进行过滤。
MSG msg = {0};
while(GetMessage(&msg, reinterpret_cast<HWND>(-1), 0, 0) > 0)
{
if (msg.hwnd == GetForegroundWindow())
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
我希望后台窗口只要在后台就不会收到任何事件。
答案 0 :(得分:0)
特别是对于鼠标消息,有一个解决方案。
前景窗口可以调用SetCapture
,然后所有后续鼠标消息都将传递给它,即使它不在其范围之内。