Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何截获CefSharp.WinForms.ChromiumWebBrowser的WndProc消息?_C#_Cefsharp - Fatal编程技术网

C# 如何截获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) 在寻找答案的过程中,我偶然发现了下面的答案(),它提供了一个解释和解决方案,但对于一项不应该如此不同寻

为了截获CefSharp.WinForms.ChromiumWebBrowser控件的WndProc消息,我使用了一个派生类,因此我可以使用
受保护的覆盖子WndProc(ByRef m As Message)

我有两个问题:

  • 我没有收到所有消息(例如WM_MOUSEWHEEL)
  • 单击控件会产生一条值为528(=0x210)的消息,而不是预期的513(=0x201=WM_LBUTTONDOWN)
  • 在寻找答案的过程中,我偶然发现了下面的答案(),它提供了一个解释和解决方案,但对于一项不应该如此不同寻常的任务来说,它似乎相当复杂。我的CEF版本(CEF 3.2454.1344.g2782fb8、Chromium 45.0.2454.101和.net 4.5.1)也没有让它工作

    具体问题是:

  • 为什么不是所有的消息都被“转发”
  • 为什么“鼠标按下”消息(和其他消息)不同

  • 显然,帮助会很好;)

    您链接到的答案基本上是正确的,默认情况下是在不同的线程中运行消息循环,这使得接收消息变得困难。您可以使用
    NativeWindow
    钩住相关进程,请参见示例。下载源代码以查看其运行情况


    另一个选项是使用现有的
    WinForms
    消息循环,请参见示例(下载源代码,如果在跟踪需要设置的部分时遇到问题,请逐步执行)

    谢谢你的额外链接!但是,我仍然不明白的是,哪些消息被“转发”到WndProc覆盖,以及为什么发送的消息值不是预期值,例如,对于WM_LBUTTONDOWN.Switch,使用
    Cef.DoMessageLoopWork()
    选项,您应该能够在之后接收消息。