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