Я потратил два месяца на создание безупречного браузерного приложения WPF с помощью встроенного веб-браузера Chromium CefSharp. Теперь выяснилось, что этот браузер должен работать с методами ввода IME, чего он не делает. По сути, браузер WPF визуализируется за пределами экрана, а изображения на экране и входные события маршалируются туда-сюда.
При вызове IME ввод текста происходит во всплывающем окне инструментов за пределами приложения, обычно в верхнем левом углу рабочего стола. Как только ввод принят, он не маршалируется обратно в браузер.
Можно ли сделать так, чтобы IME отображался, как обычно, рядом с полем ввода?
Я был бы признателен за некоторые указания о том, с чего начать чтение или кодирование. Если на это потребуется месяц, я уверен, что это произойдет.
update. Похоже, что ключи OemAuto и ImeProcessed предварительно просматриваются элементом управления браузером WPF (но не передаются в браузер за пределами экрана). Передача этих ключей внеэкранному браузеру предотвращает появление окна IME. Я не уверен, прогресс это или нет. :)
update - я думаю, что собираюсь свернуть свой собственный цикл оконных сообщений, чтобы пересылать IME и события ввода в браузер. Может быть, я могу заставить браузер обрабатывать события IME самостоятельно?
обновление. Похоже, что поддержка IME за пределами экрана не реализована в Windows (только Mac) CEF3: Windows: включить IME, если включена функция Off Screen Rendering. Я продолжаю изучать свои варианты.