Рейтинг:
1
Jochen Arndt
Это невозможно сделать, потому что, когда ваш крючок получает первый символ "H", он не знает, являются ли следующие нажатия клавиш "ello". Так что ему все равно придется это пропустить. Как только он узнает, что "Привет" был введен при обработке "о", предшествующие ключи уже переданы.
Также нет разумной цели выполнять такие замены глобально, потому что ваше приложение для подключения не знает о приложении, которое фактически получает ввод с клавиатуры. Он может даже делать что-то нежелательное, когда это приводит к выполнению горячих клавиш.
Abhijeet P Singh
Это не что-то нежелательное. Это очень просто, как текстовый редактор, например, когда в Sublime мы набираем "div#row" и вводим tab, то он меняется на правильный тег div с id=row . Я хочу добиться такой же функциональности на глобальном уровне в windows
Jochen Arndt
Как я тебе и говорил: Вы не можете предсказать, что пользователь вводит.
Вы всегда должны знать, что было введено, а затем можете изменить его в соответствии с правилами sume. Но для этого требуется сделать это на уровне приложения, потому что только приложение имеет, например, доступ к элементу управления редактированием, знает, что там содержится, и может изменить его содержимое.
Abhijeet P Singh
Вы уверены, что это невозможно сделать?
Dave Kreskowiak
Короткий ответ-Нет, не может.
Длинный ответ-да, это возможно, но с большим трудом. Есть еще много чего, что вы должны отслеживать, кроме того, что просто смотрите на нажатия клавиш, пролетающие мимо.
Нет, я не собираюсь описывать его, потому что я не собираюсь помогать в вредоносных программах. Может быть, не вы написали, а кто-то другой, кто приходит на этот пост в поисках чего-то полезного.
Jochen Arndt
Не глобально, если не знать, как данные обрабатываются активным приложением.
После передачи ключей вам придется отменить и вставить новый текст. Поэтому вы должны знать, что было вставлено, где и как это изменить. Это требует отслеживания активного окна, которое получает ключи, и доступа к этому окну для изменения содержимого. Хотя теоретически это возможно, если не предотвращено настройками безопасности, это требует большой работы и имеет большой потенциал злоупотребления и склонно к нежелательным побочным эффектам.
Ваш пример для Sublime здесь не учитывается: он делает это на уровне приложения.