Иногда при постинге на чьём-то WEB 2.0 ресурсе возникает такая хрень, что поставлен какой-то хитрый кастомный WYSIWYG-редактор, в который не так то просто запихать текст, а эмуляция клавиатуры работает так долго, что ну просто не приемлемо (или просто нет желания её использовать).
Именно в такой ситуации спасает копирование текста в буфер обмена Windows, а затем вставка его в нужное поле с помощью ZennoPoster. Но при работе с буфером обмена не стоит забывать о важной особенности:
буфер один, а потоков - много. Поэтому не редки ситуации, когда в нескольких потоках может вставиться один и тот же текст.
Чтобы решить эту задачу и не прострелить себе ногу - следует использовать C#-сниппет:
lock(SyncObjects.InputSyncer) // блокировка
{
var descr = project.Variables["content"].Value;
// сохраняем предыдущее состояние буфера
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();
System.Windows.Forms.Clipboard.SetText(previous_text);
}
Для работы этого кода нужно предварительно установить курсор (через эмуляцию клика мыши) в нужное поле. В следующий раз выложу сниппет для поиска элемента и клика мышью внутри него (если нужно?).
В данном коде нужно поменять переменную
content на свою - в ней находится ваш текст для вставки.