使用Chromium嵌入式框架覆盖鼠标

编程入门 行业动态 更新时间:2024-10-28 08:27:53
本文介绍了使用Chromium嵌入式框架覆盖鼠标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

文件 cefclient_win.cpp中有可能是

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

鼠标消息被过滤掉,因为我只收到WM_MOUSEMOVE消息?

mouse messages are filtered out, as I only get WM_MOUSEMOVE message through?

好像左键或右键在 WndProc 掌握了它们。我如何禁用鼠标右键单击特别是?

It seems like left or right clicks are handled before the WndProc gets a hold of them. How do I disable right mouse click in particular?

推荐答案

我解决它的方法是通过向创建的线程添加鼠标钩子通过CEF为每个浏览器窗口添加:

The way I solved it was by adding a mouse hook to the thread created by CEF for each browser window:

// Hook to disable right mouse clicks LRESULT CALLBACK MyMouseHook(int nCode, WPARAM wp, LPARAM lp) { MOUSEHOOKSTRUCT *pmh = (MOUSEHOOKSTRUCT *) lp; if (nCode >= 0) { if( wp == WM_RBUTTONDOWN || wp == WM_RBUTTONUP ) { return 1; } } return CallNextHookEx(NULL, nCode, wp, lp); } void CefBrowserApplication::OnCreate( CefRefPtr<CefBrowserClientHandler> aBrowserClient) { // Hook the mouse DWORD threadId = GetWindowThreadProcessId(aBrowserClient->GetBrowser()->GetWindowHandle(), NULL); HHOOK hook = SetWindowsHookEx(WH_MOUSE, MyMouseHook, NULL, threadId); }

请注意,我没有使用低级别的鼠标钩子,因为这些钩子全局为整个桌面。在全局低级别钩子中禁用鼠标右键单击将禁用所有正在运行的应用程序。

Note that I'm not using a low level mouse hook, since those are global for the entire desktop. Disabling right mouse clicks in a global low level hook would disable it for all running applications.

更多推荐

使用Chromium嵌入式框架覆盖鼠标

本文发布于:2023-11-03 13:31:45,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1555241.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:鼠标   嵌入式   框架   Chromium

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!