Быстрый ввод текста через эмуляцию клавиатуры

Регистрация
23.03.2015
Сообщения
1 309
Реакции
848
Баллы
113
Мне надо вводить текст(несколько кусков) с промежуточными действиями мышью.
Что нужно, чтобы после клика мышью в поле ввода текст вводился значительно быстрее чем стандартным кубиком или эти кодом:
C#:
Развернуть Свернуть Копировать
instance.SendText(текст, 0);
Заранее спасибо
 
Вот тоже давно с этим мучаюсь, очень медленно вводит, но за два года так и не нашел способы ускорить этот процесс
 
Мне надо вводить текст(несколько кусков) с промежуточными действиями мышью.
Что нужно, чтобы после клика мышью в поле ввода текст вводился значительно быстрее чем стандартным кубиком или эти кодом:
C#:
Развернуть Свернуть Копировать
instance.SendText(текст, 0);
Заранее спасибо
Через Ctrl+v не катит?
 
заводишь словарик с обозначением клавиш, по типу ↓ и погнал )

C#:
Развернуть Свернуть Копировать
string text = "Hello World in 2022".ToLower();

Dictionary<char, System.Windows.Forms.Keys> wordKey = new Dictionary<char, System.Windows.Forms.Keys>
{
    {'0', System.Windows.Forms.Keys.D0},
    {'2', System.Windows.Forms.Keys.D2},
    {'e', System.Windows.Forms.Keys.E},
    {'d', System.Windows.Forms.Keys.D},
    {'h', System.Windows.Forms.Keys.H},
    {'i', System.Windows.Forms.Keys.I},
    {'l', System.Windows.Forms.Keys.L},
    {'o', System.Windows.Forms.Keys.O},
    {'n', System.Windows.Forms.Keys.N},
    {'r', System.Windows.Forms.Keys.R},
    {'w', System.Windows.Forms.Keys.W},
    {' ', System.Windows.Forms.Keys.Space}
};

foreach (var s in text)
    Emulator.SendKey(instance.ActiveTab.Handle, wordKey[s], KeyboardEvent.Down);
 
и быстрее вводит? )
lock(SyncObjects.InputSyncer) // блокировка
{
var descr = project.Variables["text"].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["text"].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);
}
}


Самый быстрый ввод )
Дико жуткая х*йня на многопотоке, даже и не думайте юзать...
 
  • Спасибо
Реакции: izubr и djaga
Только на отдельном серваке можно,на компе если в многопотоке это пипец )
Нет, на серваке юзал, разницы нет. На разных потоках тестил, в итоге понял что нужно от буфера отказаться.
 
Нет, на серваке юзал, разницы нет. На разных потоках тестил, в итоге понял что нужно от буфера отказаться.
Ну хз,у меня работало нормально.Правда убрал патом,на компе мешает пипец.
 
это нужно у ТС'а спрашивать, я подобными вещами не пользуюсь ....
Очень круто!
А как раскладку поменять? А то у меня твой пример только русские буквы напишет.
 
заводишь словарик с обозначением клавиш, по типу ↓ и погнал )

C#:
Развернуть Свернуть Копировать
string text = "Hello World in 2022".ToLower();

Dictionary<char, System.Windows.Forms.Keys> wordKey = new Dictionary<char, System.Windows.Forms.Keys>
{
    {'0', System.Windows.Forms.Keys.D0},
    {'2', System.Windows.Forms.Keys.D2},
    {'e', System.Windows.Forms.Keys.E},
    {'d', System.Windows.Forms.Keys.D},
    {'h', System.Windows.Forms.Keys.H},
    {'i', System.Windows.Forms.Keys.I},
    {'l', System.Windows.Forms.Keys.L},
    {'o', System.Windows.Forms.Keys.O},
    {'n', System.Windows.Forms.Keys.N},
    {'r', System.Windows.Forms.Keys.R},
    {'w', System.Windows.Forms.Keys.W},
    {' ', System.Windows.Forms.Keys.Space}
};

foreach (var s in text)
    Emulator.SendKey(instance.ActiveTab.Handle, wordKey[s], KeyboardEvent.Down);
Подскажите пожалуйста, как найти точку, двоеточие и слэш?
 

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