Я пишу приложение для ввода текста, которое находится в системном трее и помогает вводить текст с помощью клавиатурных хуков. Текущий символ, который вводит пользователь, определяется предыдущими буквами.
Так что, если у вас есть «Я хочу бен |» где "|" представляет каретку, когда пользователь нажимает на клавиатуру, следующая буква определяется путем вычисления предыдущих букв слова «бен». Это может оказаться 'd'> "bend" или "t"> "beent" и т. Д.
Это прекрасно работает, если я начинаю каждое слово с нуля, я могу просто отслеживать слово в строке в моей программе.
Проблема возникает, когда я кладу курсор на середину слова. Мне нужно определить, какие персонажи стоят перед позицией каретки. Ситуация также возникает, если я нажимаю клавиши со стрелками и т. Д.
В прошлом приложении AutoHotkey я делал это, отправляя команду «Shift + Ctrl + Стрелка влево» для выделения символов, команду «Ctrl + C» для ее копирования, а затем сохранял буфер обмена в моей строке. Я надеюсь, что в более надежном языке, таком как C #, я смогу избежать неприятного выделения артефактов этой техники. Есть ли способ получить персонажей программно?
Обратите внимание, что это должно происходить в любом текстовом поле в приложениях, поэтому я не могу получить символы из самого текстового поля (если нет способа доступа к текущему текстовому полю, находящемуся в фокусе).
Что вы думаете?