簡體   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