Могу ли я заставить CefSharp WPF ChromiumWebBrowser принимать ввод IME?

Я потратил два месяца на создание безупречного браузерного приложения WPF с помощью встроенного веб-браузера Chromium CefSharp. Теперь выяснилось, что этот браузер должен работать с методами ввода IME, чего он не делает. По сути, браузер WPF визуализируется за пределами экрана, а изображения на экране и входные события маршалируются туда-сюда.

При вызове IME ввод текста происходит во всплывающем окне инструментов за пределами приложения, обычно в верхнем левом углу рабочего стола. Как только ввод принят, он не маршалируется обратно в браузер.

Можно ли сделать так, чтобы IME отображался, как обычно, рядом с полем ввода?

Я был бы признателен за некоторые указания о том, с чего начать чтение или кодирование. Если на это потребуется месяц, я уверен, что это произойдет.

update. Похоже, что ключи OemAuto и ImeProcessed предварительно просматриваются элементом управления браузером WPF (но не передаются в браузер за пределами экрана). Передача этих ключей внеэкранному браузеру предотвращает появление окна IME. Я не уверен, прогресс это или нет. :)

update - я думаю, что собираюсь свернуть свой собственный цикл оконных сообщений, чтобы пересылать IME и события ввода в браузер. Может быть, я могу заставить браузер обрабатывать события IME самостоятельно?

обновление. Похоже, что поддержка IME за пределами экрана не реализована в Windows (только Mac) CEF3: Windows: включить IME, если включена функция Off Screen Rendering. Я продолжаю изучать свои варианты.


person Nathan    schedule 16.01.2015    source источник


Ответы (1)


Я собрал быстрый хак, опубликованный в рамках обсуждения на https://github.com/cefsharp/CefSharp/issues/583 ... но, поскольку подходящее место для решения этой проблемы действительно находится в кодовой базе CEF, я не решаюсь добавить хак в кодовую базу CefSharp (я боюсь побочных эффектов для тех, кто не нуждается поддержка IME).

В любом случае, я надеюсь, что проблема CefSharp # 583 поможет вам найти решение - либо с помощью краткосрочного взлома, либо, что предпочтительнее, приведет к решению проблемы CEF, которую вы уже выкопали сами!

person jornh    schedule 19.01.2015
comment
Я рассмотрел это возможное решение, но оно не сработало, как настоящая вещь. Я пришел к выводу, что внеэкранный IME невозможен в Windows, поэтому я переработал приложение с помощью браузеров WinForm для ввода и браузеров WPF для просмотра. Браузер WPF идеально подходит для создания снимков экрана и наложения другого содержимого. - person Nathan; 30.01.2015