C# 如何截获CefSharp.WinForms.ChromiumWebBrowser的WndProc消息?
为了截获CefSharp.WinForms.ChromiumWebBrowser控件的WndProc消息,我使用了一个派生类,因此我可以使用C# 如何截获CefSharp.WinForms.ChromiumWebBrowser的WndProc消息?,c#,cefsharp,C#,Cefsharp,为了截获CefSharp.WinForms.ChromiumWebBrowser控件的WndProc消息,我使用了一个派生类,因此我可以使用受保护的覆盖子WndProc(ByRef m As Message) 我有两个问题: 我没有收到所有消息(例如WM_MOUSEWHEEL) 单击控件会产生一条值为528(=0x210)的消息,而不是预期的513(=0x201=WM_LBUTTONDOWN) 在寻找答案的过程中,我偶然发现了下面的答案(),它提供了一个解释和解决方案,但对于一项不应该如此不同寻
受保护的覆盖子WndProc(ByRef m As Message)
我有两个问题:
显然,帮助会很好;) 您链接到的答案基本上是正确的,默认情况下是在不同的线程中运行消息循环,这使得接收消息变得困难。您可以使用
NativeWindow
钩住相关进程,请参见示例。下载源代码以查看其运行情况
另一个选项是使用现有的
WinForms
消息循环,请参见示例(下载源代码,如果在跟踪需要设置的部分时遇到问题,请逐步执行) 谢谢你的额外链接!但是,我仍然不明白的是,哪些消息被“转发”到WndProc覆盖,以及为什么发送的消息值不是预期值,例如,对于WM_LBUTTONDOWN.Switch,使用Cef.DoMessageLoopWork()
选项,您应该能够在之后接收消息。