typewriter: бесплатная программа, которая введёт любой текст за вас

от автора

Эта статья поможет сэкономить время тем, кто сталкивается с подобными ситуациями — когда нужно перенести некоторые количества текста в такие места, куда он простым буфером обмена не переносится, например — в remote console виртуального или физического сервера, как Proxmox или iBMC / iLO.

Аналогичное решение «ClickPaste» (с гитхаба) показалось мне чуть менее удобным — захотелось доработать идею и сделать ввод более функциональным и наглядным.

Особенности моей реализации:
• запуск из одиночного исполняемого файла (portable) или из легковесного архива;
• многострочный ввод (симулирует нажатие клавиши enter между строк);
• редактирование и превью в окне ввода;
• режим медленного ввода;
• русская локализация

При нажатии на кнопку «Type for me!», программа переключится на предыдущее активное окно и симулирует либо быстрый ввод, либо с задержками между символами при отмеченном чекбоксе «Slow mode». Закрытие окна программы немедленно прекращает её выполнение.

Исходный код (C#)
using System.Text.RegularExpressions;  namespace typewriter {     public partial class typewriter : Form     {         public typewriter()         {             InitializeComponent();         }          // Обработчик события для закрытия формы         protected override void OnFormClosing(FormClosingEventArgs e)         {             base.OnFormClosing(e);              // Останавливаем выполнение программы при закрытии окна             Environment.Exit(0);         }          private void button1_Click(object sender, EventArgs e)         {             string inputText = textBox1.Text;              // Переключаемся на предыдущее активное окно (Alt + Tab)             SendKeys.SendWait("%{TAB}");              // Задержка на время переключения окна             Thread.Sleep(1500); // полторы секунды              // Обработка текста             foreach (char c in inputText)             {                  if (c == '\n') // Если символ - перенос строки                 {                     // Ничего не делаем, чтобы заблокировать лишние переносы строки                 }                 else                 {                     if (checkBox1.Checked) // Медленный режим                     {                         // Экранируем проблемные знаки                         string txt = Regex.Replace(c.ToString(), "[+^%~()]", "{$0}");                         SendKeys.SendWait(txt);                         Thread.Sleep(100); // 100 миллисекунд между символами, если чекбокс включен                     }                     else                     {                         string txt = Regex.Replace(c.ToString(), "[+^%~()]", "{$0}");                         SendKeys.SendWait(txt);                     }                 }             }             if (checkBox2.Checked) // Заканчивать клавишей "ВВОД"             {                 SendKeys.SendWait("{ENTER}");             }         }         private void checkBox3_CheckedChanged(object sender, EventArgs e)         {             this.TopMost = checkBox3.Checked; //Поверх всех окон         }          private void button2_Click(object sender, EventArgs e)         {             textBox1.Clear(); // Очистить         }     } }

Ссылки на скачивание

Microsoft Windows
.exe file, 69MB
English

typewriter.exe

SHA256 hash:

72AB75E32708412906C83F5907DF911886D892E1684C6AFD50D5C0ACCC196760
Хеш-суммы в два клика

Русский

typewriter-ru.exe

SHA256 hash:

CC9A0E05DEE1C65B2951AD687E5B5C515224FBDF57BD5805CC3FC64108188690
Хеш-суммы в два клика

7Zip archive, 115KB
English

typewriter.7z

SHA256 hash:

7530621FAE2A6340381E6DD22C4717027A313319C4A826F7772DB573F38E7ABB
Хеш-суммы в два клика

Русский

typewriter-ru.7z

SHA256 hash:

B7835A7F341468D6A2AE494406B232BDDC365A597B2DACBC9B929ED161191B84
Хеш-суммы в два клика

Если кому-то нужна версия для ОС Linux - пишите в комментарии, сделаю!


ссылка на оригинал статьи https://habr.com/ru/articles/824452/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *