C# 我可以让CefSharp WPF ChromiumWebBrowser接受输入法输入吗?

C# 我可以让CefSharp WPF ChromiumWebBrowser接受输入法输入吗?,c#,wpf,cefsharp,C#,Wpf,Cefsharp,我花了两个月的时间使用嵌入式Chromium web浏览器创建了一个完美的WPF浏览器应用程序。现在有人透露,该浏览器必须使用IME输入法,但事实并非如此。从本质上讲,WPF浏览器是在屏幕外呈现的,屏幕图像和输入事件被前后编组 调用IME时,文本输入出现在应用程序外部的弹出工具窗口中,通常位于桌面的左上角。一旦输入被接受,输入就不会被封送回浏览器 是否可以使IME正常显示在输入字段旁边 如果能给我一些关于从哪里开始阅读或编码的建议,我将不胜感激。如果这需要一个月的时间来实施,我相信它会实现 更新

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

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

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

如果能给我一些关于从哪里开始阅读或编码的建议,我将不胜感激。如果这需要一个月的时间来实施,我相信它会实现

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

更新- 我想我要滚动我自己的窗口消息循环,将输入法和输入事件转发到浏览器。也许我可以让浏览器自己处理IME事件

更新- 屏幕外输入法支持似乎没有在Windows上实现(仅Mac)
. 我将继续探索我的选择。

我将一篇简短的文章作为讨论的一部分发布在。。。但是,由于解决这一问题的正确途径是在CEF代码库中,因此我不太愿意将hack添加到CefSharp代码库中(我担心不需要IME支持的人会有副作用)


无论如何,我希望CefSharp问题#583有助于你找到一个解决方案——或者通过短期黑客——或者更好地解决你自己已经发现的CEF问题

我研究了这个可能的解决方案,但它不像真正的解决方案那样有效。我开始相信,在Windows环境下,屏幕外输入法是不可能的,所以我用WinForm浏览器和WPF浏览器重新设计了这个应用程序,分别用于输入和查看。WPF浏览器是捕获屏幕截图和覆盖其他内容的理想选择。