我可以让 CefSharp WPF ChromiumWebBrowser 接受 IME 输入吗?

Can I get the CefSharp WPF ChromiumWebBrowser to accept IME input?

我花了两个月的时间使用 CefSharp 嵌入式 Chromium 网络浏览器创建了一个完美的 WPF 浏览器应用程序。现在有人透露,该浏览器必须支持 IME 输入法,但事实并非如此。本质上,WPF 浏览器是在屏幕外呈现的,屏幕图像和输入事件来回编组。

调用 IME 时,文本输入会出现在应用程序外部的弹出工具中 -window,通常位于桌面的左上角。一旦输入被接受,输入就不会被编组回浏览器。

是否可以让 IME 正常显示在输入字段旁边?

对于从哪里开始阅读或编码的一些指示,我将不胜感激。如果这需要一个月的时间来实施,我相信它会发生。

更新- 看起来键 OemAuto 和 ImeProcessed 正在由 WPF 浏览器控件预览(但未传递到屏幕外浏览器)。将这些键传递给屏幕外浏览器可防止 IME window 出现。我不确定这是否是进步。 :)

更新- 我想我要推出自己的 window 消息循环来将 IME 和输入事件转发到浏览器。也许我可以让浏览器自己处理 IME 事件?

更新- Windows 似乎没有实现离屏 IME 支持(仅 Mac) CEF3: Windows: Enable IME when Off Screen Rendering is enabled。我会继续探索我的选择。

作为 https://github.com/cefsharp/CefSharp/issues/583 中讨论的一部分,我拼凑了一个快速 hack,但由于解决这个问题的适当位置确实在 CEF 代码库中,我正在犹豫是否将 hack 添加到CefSharp 代码库(我担心那些不需要 IME 支持的人会产生副作用)。

无论如何,我希望 CefSharp 问题 #583 能帮助您找到解决方案 - 通过短期破解 - 或者最好能解决您自己已经发现的 CEF 问题!