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

  • Автор темы Автор темы serg32
  • Дата начала Дата начала

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Реакции
15
Баллы
18
Здравствуйте.
Обратил внимание на нестабильную работу экшена эмуляции клавиатуры. Например, есть большой текст, который надо набрать, задержка стоит максимальная, но при этом всем, печатает криво (не всегда, но бывает не редко), то буквы пропустит, то спаяет слова, то пробелов каких-то натыркает. Можно как то заменить этот экшн как бы имитировать вставку текста, будто из буфера. Я сначала делаю фокус по нужному элементу, а потом печатаю текст. Можно ли оставить так же фокус(это важно), и убрать этот экшн и заменить на какое-либо другое действие?
 
set value {-Variable.text-}
 
то буквы пропустит, то спаяет слова, то пробелов каких-то натыркает
Видимо JS на сайте на ходу обрабатывает вводимые данные.
Попробуйте убыстрить процесс ввода.
Еще можно попробовать перед вводом выключить JS, а после окончания ввода обратно его включить.
 
  • Оценить
Реакции: Astraport
Для вставки текста из буфера использую
Код:
Развернуть Свернуть Копировать
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);
    }}
 
Было так с одним сайтом. Вводил номер телефона эмуляцией. Смотрю смс раз не пришла, два не пришла. А оказалось он иногда числа менял местами.

Поменял на буфер обмена. Теперь все отлично.
 
Для вставки текста из буфера использую
Код:
Развернуть Свернуть Копировать
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);
    }}
Данный метод помог! Спасибо
 

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