2016-04-14 26 views
1

これは簡単な質問かもしれませんが、私はChromiumWebBrowserコントロール(CefSharp)を読み込んでいるwinformsアプリケーションを持っています。そして、それらがすべて飲み込まれているのでキープレビューイベントをキャプチャする方法を理解できませんコントロールによって。ブラウザコントロールのPreviewKeyDownイベントにハンドラを付加する標準は機能しません。既知の回避策はありますか?ありがとうcefsharpとpreviewkeydownイベントが機能しない

答えて

0

CEFは独自のメッセージループで実行されるため、標準イベントは機能しません。

最初に最も簡単な方法はIKeyboardHandlerを実装することです。CefSharpソースを確認して、より詳細な例を確認することができます(必要に応じて親ウィンドウにメッセージを転送する方法があります)。

settings.MultiThreadedMessageLoop = falseで2回目を実行し、アプリケーションアイドル時にCef.DoMessageLoopWork()を呼び出して、CEFをメインアプリケーションと同じメッセージループに組み込みます。単なるラッパーであるCefSharp - 再度、ソースの例は、第三のオプションは、CEFメッセージループにフック例

CEF = Chromium Embedded Frameworkためhttps://github.com/cefsharp/CefSharp/blob/cefsharp/49/CefSharp.WinForms.Example/ChromeWidgetMessageInterceptor.csを参照するhttps://github.com/cefsharp/CefSharp/blob/cefsharp/49/CefSharp.WinForms.Example/Program.cs#L63

参照含ま。

+0

オプション1と3の両方を試しましたが、インターセプタからマウスイベントを取得することができましたが、何らかの理由でキーボードイベントをキャプチャできませんでした。それはオプション1がうまくいきました。ありがとうございました –

+0

「必要ならば、親ウィンドウへのメッセージを転送します」というサンプルコードのソースコードを指摘できますか? – Harm

関連する問題