Альтернатива "Эмуляции клавиатуры"

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Здравствуйте.
Обратил внимание на нестабильную работу экшена эмуляции клавиатуры. Например, есть большой текст, который надо набрать, задержка стоит максимальная, но при этом всем, печатает криво (не всегда, но бывает не редко), то буквы пропустит, то спаяет слова, то пробелов каких-то натыркает. Можно как то заменить этот экшн как бы имитировать вставку текста, будто из буфера. Я сначала делаю фокус по нужному элементу, а потом печатаю текст. Можно ли оставить так же фокус(это важно), и убрать этот экшн и заменить на какое-либо другое действие?
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 084
Благодарностей
339
Баллы
83
set value {-Variable.text-}
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 682
Баллы
113
то буквы пропустит, то спаяет слова, то пробелов каких-то натыркает
Видимо JS на сайте на ходу обрабатывает вводимые данные.
Попробуйте убыстрить процесс ввода.
Еще можно попробовать перед вводом выключить JS, а после окончания ввода обратно его включить.
 
  • Спасибо
Реакции: Astraport

Vass

Client
Регистрация
03.02.2014
Сообщения
79
Благодарностей
10
Баллы
8
Для вставки текста из буфера использую
Код:
lock(SyncObjects.InputSyncer) // блокировка
{
    var descr = project.Variables["Thema"].Value ;
    if (String.IsNullOrEmpty(descr)) {
        throw new Exception("Пустой текст для вставки");
    }
    // сохраняем предыдущее состояние буфера
    String previous_text = null;
    previous_text = System.Windows.Forms.Clipboard.GetText();
    // сохраняем нужный текст в буфер и вставляем его (программно делаем CTRL+V)
    System.Windows.Forms.Clipboard.SetText(descr);
    instance.ActiveTab.KeyEvent("v","press","ctrl");
    // стираем буфер и возвращаем его к первоначальному состоянию
    System.Windows.Forms.Clipboard.Clear();
    if (!String.IsNullOrEmpty(previous_text)) {
        System.Windows.Forms.Clipboard.SetText(previous_text);
    }}
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
Было так с одним сайтом. Вводил номер телефона эмуляцией. Смотрю смс раз не пришла, два не пришла. А оказалось он иногда числа менял местами.

Поменял на буфер обмена. Теперь все отлично.
 

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Для вставки текста из буфера использую
Код:
lock(SyncObjects.InputSyncer) // блокировка
{
    var descr = project.Variables["Thema"].Value ;
    if (String.IsNullOrEmpty(descr)) {
        throw new Exception("Пустой текст для вставки");
    }
    // сохраняем предыдущее состояние буфера
    String previous_text = null;
    previous_text = System.Windows.Forms.Clipboard.GetText();
    // сохраняем нужный текст в буфер и вставляем его (программно делаем CTRL+V)
    System.Windows.Forms.Clipboard.SetText(descr);
    instance.ActiveTab.KeyEvent("v","press","ctrl");
    // стираем буфер и возвращаем его к первоначальному состоянию
    System.Windows.Forms.Clipboard.Clear();
    if (!String.IsNullOrEmpty(previous_text)) {
        System.Windows.Forms.Clipboard.SetText(previous_text);
    }}
Данный метод помог! Спасибо
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)