Вверх ↑
Ответов: 4657
Рейтинг: 760
#1: 2025-04-05 20:24:29 ЛС | профиль | цитата
Модификация компонента KeyEvent

1) Полностью переведен на функцию SendInput.
Добавлен отдельный модуль для этого.

2) В оригинале не очень корректно активировалось целевое окно

3) Добавлено свойство Mode (VirtualKey, Unicode):
VirtualKey - Code указывает виртуальный код клавиши от 1 до 254, независимый от оборудования. Так работает текущий компонент.
Unicode - для метода doPress Code является кодом Unicode-символа, а метод doSendString будет посылать строку в формате Unicode.

4) Добавлен метод doSendString, верхняя точка и свойство Text.
В режиме Mode=VirtualKey чтобы по doPress получить большую английскую букву "A", надо подать код 67 и с включенной клавишей Shift.
В режиме Mode=Unicode метод doSendString посылает символы как символы Unicode, и они будут получены окном именно как символы (если программа ANSI - то только те, которые входят в текущую кодовою страницу Windows).
В остальных режимах doSendString берет из Text только коды клавиш по коду символа, как будто выполняется doPress с подачей на точку Code.

В примере чтобы послать строку с кириллицей в своё поле ввода, нужно переключить раскладку на русский (из-за того, что программа ANSI).

Работа с мышью в SendInp.pas не реализована, так как пока не знаю, где и в каком виде будет нужна. Модуль показывает работу с функцией SendInput() и может использоваться в собственных компонентах. Учтены некоторые проблемные моменты.
карма: 26

0
файлы: 1KeyEvent_mod_NS_2025-04-05.zip [5.1KB] [49]
Редактировалось 3 раз(а), последний 2025-04-05 20:29:06