Эмуляция клавиатуры через буфер обмена

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Здравствуйте
У меня такая задача, в проекте используется клик по месту на странице и начинает работать обычный эмулятор клавиатуры, который вставляет нужный текст, но объем текста иногда бывает очень большой и процесс становится очень долгим, никак нельзя этот текст переменной поместить якобы в буфер, а затем через эмуляцию сделать что-то типа сочетания клавиш "Ctrl+C" чтобы этот буфер вставился - или так вообще нельзя сделать?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 488
Благодарностей
8 694
Баллы
113
никак нельзя этот текст переменной поместить якобы в буфер, а затем через эмуляцию сделать что-то типа сочетания клавиш "Ctrl+C" чтобы этот буфер вставился - или так вообще нельзя сделать?
Можно использовать C# снипет для вставки из буфера обмена.
Для Хрома CEF и Хромиума пока что можно использовать разные реализации такого снипета.

C#:
instance.ActiveTab.KeyEvent("v", "press", "ctrl");
C#:
instance.SendText("{CTRLDOWN}v{CTRLUP}", 0);
Для Хрома CEF будут работать оба эти снипета.
Для Хромиума - пока только второй вариант снипета.
Но второй вариант работает медленнее.

Для след. версии 7.7.1.0 - уже пофиксено, эта версия находится на внутр. тестировании, надеюсь что совсем скоро будет доступен тест для всех пользователей - предрелиз.
 
Последнее редактирование:
  • Спасибо
Реакции: Mikhail B. и serg32

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Можно использовать C# снипет для вставки из буфера обмена.
Для Хрома CEF и Хромиума пока что можно использовать разные реализации такого снипета.

C#:
instance.ActiveTab.KeyEvent("v", "press", "ctrl");
C#:
instance.SendText("{CTRLDOWN}v{CTRLUP}", 0);
Для Хрома CEF будут работать оба эти снипета.
Для Хромиума - пока только второй вариант снипета.
Но второй вариант работает медленнее.

Для след. версии 7.7.1.0 - уже пофиксено, эта версия находится на внутр. тестировании, надеюсь что совсем скоро будет доступен тест для всех пользователей - предрелиз.
А как поместить значение переменной в буфер обмена?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 488
Благодарностей
8 694
Баллы
113
  • Спасибо
Реакции: serg32

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
Здесь есть полный вариант снипета, с предварительным копированием в буфер обмена:
Спасибо, со вставкой из буфера разобрался, у меня кстати сработал и предложенный выше вариант в этой теме. Столкнулся с другой проблемой. Раньше текст который вставлялся через эмуляцию клавиатуры делал разрыв строки и перенос строк через клавишу {ENTER}, а если вставлять через буфер, то вставится это как обычный текст, как в таком случае занести в текст переменной такие разрывы строк, чтобы при вставке из буфера они сохранились как переносы. Сейчас я через поиск/замена в тексте теги </p> заменяю на {ENTER} и это работает, но только под эмуляцию...
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 488
Благодарностей
8 694
Баллы
113
Спасибо, со вставкой из буфера разобрался, у меня кстати сработал и предложенный выше вариант в этой теме. Столкнулся с другой проблемой. Раньше текст который вставлялся через эмуляцию клавиатуры делал разрыв строки и перенос строк через клавишу {ENTER}, а если вставлять через буфер, то вставится это как обычный текст, как в таком случае занести в текст переменной такие разрывы строк, чтобы при вставке из буфера они сохранились как переносы. Сейчас я через поиск/замена в тексте теги </p> заменяю на {ENTER} и это работает, но только под эмуляцию...
Попробуйте использовать {-String.Enter-} вместо переводов строк.
 
  • Спасибо
Реакции: serg32

serg32

Client
Регистрация
27.02.2015
Сообщения
545
Благодарностей
15
Баллы
18
  • Спасибо
Реакции: Sergodjan

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