是否有可能在文件中cefclient_win.cpp
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
鼠标消息被过滤掉,因为我只收到 WM_MOUSEMOVE 消息?
似乎左键或右键单击是在WndProc https://en.wikipedia.org/wiki/WindowProc抓住他们。特别是如何禁用鼠标右键单击?
我解决这个问题的方法是在 CEF 为每个浏览器窗口创建的线程中添加一个鼠标钩子:
// 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);
}
请注意,我没有使用低级鼠标挂钩,因为它们对于整个桌面来说是全局的。在全局低级挂钩中禁用鼠标右键单击将禁用所有正在运行的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)