解决 CefSharp WPF控件不能使用输入法输入中文的问题(代码已提交到 github)
首先,本文所有 代碼已經(jīng)提交到github,需要的可以直接從github獲取:https://github.com/starts2000/CefSharp,希望可以幫助到有需要的朋友們。
CEF 簡介
CEF is a BSD-licensed open source project founded by Marshall Greenblatt in 2008 and based on the Google Chromium project. Unlike the Chromium project itself, which focuses mainly on Google Chrome application development, CEF focuses on facilitating embedded browser use cases in third-party applications. CEF insulates the user from the underlying Chromium and Blink code complexity by offering production-quality stable APIs, release branches tracking specific Chromium releases, and binary distributions. Most features in CEF have default implementations that provide rich functionality while requiring little or no integration work from the user. There are currently over 100 million installed instances of CEF around the world embedded in products from a wide range of companies and industries. A partial list of companies and products using CEF is available on the CEF Wikipedia page. Some use cases for CEF include:
Embedding an HTML5-compliant Web browser control in an existing native application.
Creating a light-weight native “shell” application that hosts a user interface developed primarily using Web technologies.
Rendering Web content “off-screen” in applications that have their own custom drawing frameworks.
Acting as a host for automated testing of existing Web properties and applications.
CEF supports a wide range of programming languages and operating systems and can be easily integrated into both new and existing applications. It was designed from the ground up with both performance and ease of use in mind. The base framework includes C and C++ programming interfaces exposed via native libraries that insulate the host application from Chromium and Blink implementation details. It provides close integration between the browser and the host application including support for custom plugins, protocols, JavaScript objects and JavaScript extensions. The host application can optionally control resource loading, navigation, context menus, printing and more, while taking advantage of the same performance and HTML5 technologies available in the Google Chrome Web browser.
Numerous individuals and organizations contribute time and resources to support CEF development, but more involvement from the community is always welcome. This includes support for both the core CEF project and external projects that integrate CEF with additional programming languages and frameworks (see the "External Projects" section below). If you are interested in donating time to help with CEF development please see the "Helping Out" section below. If you are interested in donating money to support general CEF development and infrastructure efforts please visit the CEF Donations page.
CEF 的 .NET 開源項(xiàng)目主要有下面三個:
CefSharp:https://github.com/chillitom/CefSharp
cefglue:https://bitbucket.org/xilium/xilium.cefglue
chromiumfx:https://bitbucket.org/chromiumfx/chromiumfx
CEF osr IME BUG 歷史
CefSharp 和?cefglue 都使用 C++/CLI ?對 cef API 進(jìn)行封裝,都提供了 cef 的 Winform 和 WPF 控件,而?chromiumfx 使用 P/Invoke 對?cef API 進(jìn)行封裝,只提供了cef?Winform 控件。CefSharp 和?cefglue 的??cef?WPF 控件都使用 cef 的 osr ( off screen ?render)方式進(jìn)行渲染,由于 osr 模式一直存在 IME BUG,所以 CefSharp 和?cefglue 的 WPF 控件也存在。
CEF osr IME bug 在?2012-11-22 就有人提出:https://bitbucket.org/chromiumembedded/cef/issues/798/out-of-focus-while-entering-ime,但是直到2016年底才解決https://bitbucket.org/chromiumembedded/cef/issues/1675/inline-ime-support-nstextinput-protocol-in,真是等的黃花菜都涼了。然而,?CefSharp 和?cefglue 更是沒能跟上 CEF 的腳步,這個 BUG 直到現(xiàn)在也沒有解決,所有相關(guān)的 issue,回答都是建議在 WPF 中使用 Host WinForm 控件的方式使用 CEF。
CEF osr IME bug:
?
最近通過參考 cef 的 osr 示例的源碼,通過移植和修改,終于實(shí)現(xiàn)了 CefSharp WPF 控件的 IME 輸入,在這里分享給大家。
主要是在 CefSharp.Core 項(xiàng)目中增加了對 IME 消息及 CEF IME 相關(guān)的處理,還有就是 WPF 的?ChromiumWebBrowser 控件的相關(guān)代碼修改。
相關(guān)文章:?
基于CefSharp構(gòu)建基于Chromium的應(yīng)用程序
使用 CefSharp 在 C# App 中嵌入 Chrome 瀏覽器
原文地址:http://www.cnblogs.com/Starts_2000/p/cefharp-wpf-osr-ime.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的解决 CefSharp WPF控件不能使用输入法输入中文的问题(代码已提交到 github)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft使用.NET Core
- 下一篇: 基于.net的微服务架构下的开发测试环境