c++ - 阻止后台应用程序接收消息
问题描述
我试图阻止后台应用程序接收鼠标事件。尽管确保消息目标的句柄与前台窗口匹配,但如果我将鼠标悬停在后台应用程序上,它仍会收到我的鼠标事件。
我也尝试过挂钩 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);
}
}
我希望后台窗口只要在后台就不会收到任何事件。
解决方案
特别是对于鼠标消息,有一个解决方案。
前台窗口可以调用SetCapture
,然后所有后续的鼠标消息都将传递给它,即使超出了它的边界。
推荐阅读
- angularjs - '/:routeparams' 正在覆盖 angularjs 中的其他路由
- python - uwsgi.service 的作业失败,因为在 ubuntu 20.04 上安装 geonode 3.2 期间控制进程以错误代码退出
- android - 颤振构建失败 DER 长度的短读取
- google-apps-script - Google Apps 脚本:TypeError:sheet.getActiveSheet 不是函数 - 全局变量刚刚开始失败
- c# - 有没有办法将参数或属性标记为可序列化?
- ios - 访问 Apple AirTag 数据的 Apple Developer API 是什么?
- javascript - Reactjs 使用 useReducer 更新对象数组中的嵌套数组
- python - 如何在 Pandas uisng for 循环中过滤 DataFrame 中的行?
- python - 禅比;自定义字段未更新
- reactjs - 升级到 Visual Studio 2019 16.10.0 后 React 应用的“加载资源失败:net::ERR_HTTP2_PROTOCOL_ERROR”