繁体   English   中英

如何截获CefSharp.WinForms.ChromiumWebBrowser的WndProc消息?

[英]How can I intercept WndProc messages of CefSharp.WinForms.ChromiumWebBrowser?

为了拦截CefSharp.WinForms.ChromiumWebBrowser控件的WndProc消息,我使用派生类,因此可以使用Protected Overrides Sub WndProc(ByRef m As Message)

我有两个问题:

  1. 我没有收到所有消息(例如WM_MOUSEWHEEL)
  2. 单击控件将导致消息值为528(= 0x210),而不是预期的513(= 0x201 = WM_LBUTTONDOWN)。

在寻找答案时,我偶然发现了以下SO答案( https://stackoverflow.com/a/20489430/4247806 ),该答案提供了解释和解决方案,但是对于一项不应该那么寻常的任务而言,它显得相当复杂。 我也没有在我的CEF版本上使用它(CEF 3.2454.1344.g2782fb8,Chromium 45.0.2454.101和.net 4.5.1。)。

具体问题是:

  1. 为什么不是所有邮件都“转发”?
  2. 为什么“鼠标按下消息”(和其他消息)不同?

很明显,帮助会很棒;)

您链接到的答案基本上是正确的,默认设置是在另一个线程中运行消息循环,这使得接收消息变得困难。 您可以使用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 (如果遇到问题,请下载源代码并逐步进行操作)需要设置)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM