Как сделать приложение наподобие google транслитерации настольного приложения в c # - PullRequest
1 голос
/ 09 июня 2010

Требуется только функциональность перехвата ввода с клавиатуры, его преобразования и отправки обратно. Например, если пользователь нажимает кнопку i, как для отправки e и т. Д.

Чтобы приложение, принимающее запись с клавиатуры, изменило его и отправило в активное окно (может быть приложение, такое как экраны Word, Excel, Windows) и т.д. Эта функция похожа на приложение для транслитерации Google для Windows. Я хотел бы сделать это в C #. Я думаю, что для этого нужно подключить клавиатуру и отправить ключи (например, sendkey в vb) в текущее окно. Работа такая же, как Гугл транслитерация . Однако логика преобразования совершенно иная.

Ответы [ 2 ]

0 голосов
/ 24 августа 2011

Вам нужно написать DLL, которая использует платформу Windows Text Service или устаревшую платформу IME.Эта dll будет загружена в langauge bar и когда вы ее активируете;ваш код, в котором реализован набор APIS, требуемый инфраструктурой TSF или IME, получит ключевое событие. Затем вы можете передать его в свой код, который его переводит и передает вам строку.Текущий текстовый редактор приложения Windows.

0 голосов
/ 09 июня 2010

Я не уверен, что именно вопрос, так что он может быть закрыт из-за слишком расплывчатого.Однако, похоже, что вам придется буферизовать все нажатия клавиш, асинхронно транслитерировать слова или фразы в какой-либо сервис, а затем помещать их обратно в буфер клавиатуры с помощью клавиш sendkeys, как вы упоминали.Проблема в том, что если ваше приложение имеет фокус, мы не знаем, где пользователь хочет, чтобы транслитерированный текст отображался, и если приложение, такое как Word, имеет фокус, оно получит как реальные нажатия клавиш, так и транслитерированный текст, который будетзатем смешаться (беспорядок).Кажется, лучше просто транслитерировать куски текста, а не пытаться вмешиваться в буфер клавиатуры - кроме того, почти невозможно игнорировать backspace, отмену и т. Д.

...