如何拦截 CefSharp.WinForms.ChromiumWebBrowser 的 WndProc 消息
本文关键字:WndProc 消息 ChromiumWebBrowser WinForms 何拦截 CefSharp | 更新日期: 2023-09-27 18:34:38
为了拦截CefSharp.WinForms.ChromiumWebBrowser控件的WndProc消息,我正在使用派生类,因此可以使用Protected Overrides Sub WndProc(ByRef m As Message)
。
我有两个问题:
- 我没有收到所有消息(例如WM_MOUSEWHEEL(
- 单击控件会导致出现值为 528 (=0x210( 而不是预期的 513 (= 0x201 = WM_LBUTTONDOWN( 的消息。
在寻找答案时,我偶然发现了以下 SO 答案 (https://stackoverflow.com/a/20489430/4247806(,它提供了解释和解决方案,但对于一项不应该那么不寻常的任务来说,它似乎相当复杂。我也没有让它适用于我的 CEF 版本(CEF 3.2454.1344.g2782fb8、铬 45.0.2454.101 和 .net 4.5.1.(。
具体问题是:
- 为什么不是所有邮件都"转发"?
- 为什么"鼠标按下消息"(和其他消息(不同?
显然,帮助将是巨大的;)
你链接的答案基本正确,默认是在不同的线程中运行消息循环,这使得接收消息变得困难。您可以使用NativeWindow
挂钩相关进程,有关示例,请参阅 https://github.com/cefsharp/CefSharp/blob/cefsharp/47/CefSharp.WinForms.Example/ChromeWidgetMessageInterceptor.cs#L22。下载源代码以查看其实际效果。
另一种选择是使用现有的WinForms
消息循环,有关示例,请参阅 https://github.com/cefsharp/CefSharp/commit/fe11f2eada542f49e4eef0feed9b2b0978446bbf#diff-f142d024925e73816b0fabd620d2f71d(下载源代码并在遵循需要设置哪些部分时遇到问题(。