- Регистрация
- 09.10.2015
- Сообщения
- 3 916
- Благодарностей
- 3 879
- Баллы
- 113
Иногда при постинге на чьём-то WEB 2.0 ресурсе возникает такая хрень, что поставлен какой-то хитрый кастомный WYSIWYG-редактор, в который не так то просто запихать текст, а эмуляция клавиатуры работает так долго, что ну просто не приемлемо (или просто нет желания её использовать).
Именно в такой ситуации спасает копирование текста в буфер обмена Windows, а затем вставка его в нужное поле с помощью ZennoPoster. Но при работе с буфером обмена не стоит забывать о важной особенности: буфер один, а потоков - много. Поэтому не редки ситуации, когда в нескольких потоках может вставиться один и тот же текст.
Чтобы решить эту задачу и не прострелить себе ногу - следует использовать C#-сниппет:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Для работы этого кода нужно предварительно установить курсор (через эмуляцию клика мыши) в нужное поле. В следующий раз выложу сниппет для поиска элемента и клика мышью внутри него (если нужно?).
В данном коде нужно поменять переменную content на свою - в ней находится ваш текст для вставки.
								Именно в такой ситуации спасает копирование текста в буфер обмена 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 на свою - в ней находится ваш текст для вставки.
								
									Последнее редактирование: 
									
							
						
						
	
		
			
		
	
					



 
 
		 
 
		 
 
		 
 
		 
 
		 
	 
 
		 
 
		


 
	 
	 
	