0

我花了两个月的时间使用CefSharp嵌入式 Chromium Web 浏览器创建了一个完美的 WPF 浏览器应用程序。现在发现该浏览器必须使用 IME 输入法,但它不能。本质上,WPF 浏览器是在屏幕外呈现的,屏幕图像和输入事件来回编组。

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

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

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

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

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

更新 - Windows(仅限 Mac)CEF3 上似乎没有实现屏幕外 IME 支持 :Windows:启用屏幕外渲染时启用 IME。我正在继续探索我的选择。

4

1 回答 1

0

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

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

于 2015-01-19T17:43:59.193 回答