Эмуляция Ctrl+V

  • Автор темы Автор темы noble
  • Дата начала Дата начала

  1. Код:
    Развернуть Свернуть Копировать
    string text = project.Variables["Text"].Value;
    System.Windows.Forms.Clipboard.SetText(text);
    instance.ActiveTab.KeyEvent("v","press","ctrl");

Что делать если нужно вставить "котлету" из переменных?

{-Variable.zag-}
{ENTER}
{-Variable.ssylka-}{-Variable.metka_fb-}
{ENTER}
{-Variable.tegi-}
 
Что делать если нужно вставить "котлету" из переменных?

{-Variable.zag-}
{ENTER}
{-Variable.ssylka-}{-Variable.metka_fb-}
{ENTER}
{-Variable.tegi-}
Код:
Развернуть Свернуть Копировать
string zag = project.Variables["zag"].Value;
string ssylka = project.Variables["ssylka"].Value;
string metka_fb = project.Variables["metka_fb"].Value;
string tegi = project.Variables["tegi"].Value;

System.Windows.Forms.Clipboard.SetText(zag + "\r\n" + ssylka + metka_fb + "\r\n" + tegi);
instance.ActiveTab.KeyEvent("v","press","ctrl");
или если нужно, чтоб разделялось пустыми строками, то заменить
Код:
Развернуть Свернуть Копировать
System.Windows.Forms.Clipboard.SetText(zag + "\r\n" + ssylka + metka_fb + "\r\n" + tegi);
на
Код:
Развернуть Свернуть Копировать
System.Windows.Forms.Clipboard.SetText(zag + "\r\n\r\n" + ssylka + metka_fb + "\r\n\r\n" + tegi);
 
Последнее редактирование:
  • Оценить
Реакции: noble
Код:
Развернуть Свернуть Копировать
string zag = project.Variables["zag"].Value;
string ssylka = project.Variables["ssylka"].Value;
string metka_fb = project.Variables["metka_fb"].Value;
string tegi = project.Variables["tegi"].Value;

System.Windows.Forms.Clipboard.SetText(zag + "\r\n" + ssylka + metka_fb + "\r\n" + tegi);
instance.ActiveTab.KeyEvent("v","press","ctrl");
или если нужно, чтоб разделялось пустыми строками, то заменить
Код:
Развернуть Свернуть Копировать
System.Windows.Forms.Clipboard.SetText(zag + "\r\n" + ssylka + metka_fb + "\r\n" + tegi);
на
Код:
Развернуть Свернуть Копировать
System.Windows.Forms.Clipboard.SetText(zag + "\r\n\r\n" + ssylka + metka_fb + "\r\n\r\n" + tegi);

Большое спасибо :bo:
 
Хороший метод, однако, есть некоторые не совсем приятные моменты. Например тот, что если работать на компе в каком-то редакторе, во время исполнения данного скрипта, то есть вероятность того, что из клипбоарда вставится та информация, которая в данный момент была использована в стороннем редакторе.
ВОПРОС: как избежать такого момента?
 
Тут два варианта: и
Хороший метод, однако, есть некоторые не совсем приятные моменты. Например тот, что если работать на компе в каком-то редакторе, во время исполнения данного скрипта, то есть вероятность того, что из клипбоарда вставится та информация, которая в данный момент была использована в стороннем редакторе.
ВОПРОС: как избежать такого момента?
ли использовать буфер обмена, который один на всю машину, или не использовать
 
Да есть такой момент с буфером! Мешает иногда, хочешь ссылку вставить,а он тебе раз и скрипт редиректа. Может есть внутренний буфер зеннопостер? Или может его можно реализовать?
 
Да есть такой момент с буфером! Мешает иногда, хочешь ссылку вставить,а он тебе раз и скрипт редиректа. Может есть внутренний буфер зеннопостер? Или может его можно реализовать?
Тут играем, тут не играем а тут мы рыбу заворачиваем))) Как вы себе это представляете?
 
Чё-то вы сразу пессимистично настроились

Тут играем, тут не играем а тут мы рыбу заворачиваем))) Как вы себе это представляете?
Например, Зенно ставит в какую-то особую ячейку буфера, доступную лишь ему. То есть разграничивает буфер.

Я не программист, как это реализовать не знаю, но вот нашёл пару статей на данную тему, в которых, вроде бы (на мой взгляд) предлагается решение
- Новый подход к реализации контроля и разграничения прав доступа к данным в информационных системах
- Контроль доступа
Может кто-то, кто более посвящён в тему, почитает и поймёт как решить задачу?

P.S. Пришла в голову идея. Так как процедура длится какие-то доли секунды или секунды, можно сделать так:
- Копирование в фразы в буфер
- Блокирование буфера
- Вставка фразы Ctrl+V
- Очистка буфера
- Разблокировка буфера
Вроде бы в какой-то программе такое уже попадалось
 
Последнее редактирование:
  • Оценить
Реакции: Mikhail B.
Можно сделать проще, да и думаю, будет достаточно, так: очистка буфера обмена > вставка текста из переменной > очистка буфера обмена.
Операция длится доли секунд. Единственным минусом будет только то, что при параллельной работе с буфером, могут затереться скопированные данные до того, как они будут куда-то выгружены (тупо не успеть сделать копи-паст).
 
Можно сделать проще, да и думаю, будет достаточно, так: очистка буфера обмена > вставка текста из переменной > очистка буфера обмена.
Операция длится доли секунд. Единственным минусом будет только то, что при параллельной работе с буфером, могут затереться скопированные данные до того, как они будут куда-то выгружены (тупо не успеть сделать копи-паст).

По сути таки и происходит сейчас. Valiksim хочет 100% гарантию, того что в проекте не появится левый текст в результате его сёрфинга по инету
 
По сути таки и происходит сейчас. Valiksim хочет 100% гарантию, того что в проекте не появится левый текст в результате его сёрфинга по инету
99%, что левый текст в проект и так не попадет, т.к. код отрабатывает мгновенно. А вот избавиться от вставки ненужных данных из переменной проекта при параллельной работе с буфером, предложенный вариант спасет.
 
  • Оценить
Реакции: noble
У меня к примеру 1 текст в 5 потоков. Но стоит интервал 2 секунды между назначением переменной и вставки ее в буфер, т.к. переменная подтягивает другие переменные и формирует текст. Корректно ли будет работать если я сразу сделаю без пауз?
 
У меня к примеру 1 текст в 5 потоков. Но стоит интервал 2 секунды между назначением переменной и вставки ее в буфер, т.к. переменная подтягивает другие переменные и формирует текст. Корректно ли будет работать если я сразу сделаю без пауз?

Не понятно зачем тебе формировать текст если в он один, закинул в переменную и все дела. Если не одни то сколь и как это шайтан схема работает?
 
Не понятно зачем тебе формировать текст если в он один, закинул в переменную и все дела. Если не одни то сколь и как это шайтан схема работает?
Ну да кстати было бы логичнее использовать глобальную переменную и назначать текст 1 раз, спасибо за подсказку, ранее не использовал глобальные переменные, по ходу настало их время =)

UPD. Не получиться, так у меня интегрировано взятие из списка разных значений и далее формируется переменная, т.е. нужно каждый поток формировать новый текст.
 
Последнее редактирование:
Ну да кстати было бы логичнее использовать глобальную переменную и назначать текст 1 раз, спасибо за подсказку, ранее не использовал глобальные переменные, по ходу настало их время =)

UPD. Не получиться, так у меня интегрировано взятие из списка разных значений и далее формируется переменная, т.е. нужно каждый поток формировать новый текст.

Как вариант: "для разнесения во времени потоков" можно использовать рендомные паузы. К приму 3 рендомные паузы от 0 до 10 сек на разных этапах выполнения проекта, сведут вероятность одновременного обращения к буферу к очень низкой вероятности
 
Как вариант: "для разнесения во времени потоков" можно использовать рендомные паузы. К приму 3 рендомные паузы от 0 до 10 сек на разных этапах выполнения проекта, сведут вероятность одновременного обращения к буферу к очень низкой вероятности
У меня каждая секунда на счету, так капмонстр разгадывает по 10-20 секунд, так еще и рандомная пауза,неее.. мне надо быстро, у меня 5 потоков, а шаблон делается 1 минуту.
 
У меня каждая секунда на счету, так капмонстр разгадывает по 10-20 секунд, так еще и рандомная пауза,неее.. мне надо быстро, у меня 5 потоков, а шаблон делается 1 минуту.
Думаю, что без пауз должно нормально работать. Попробуйте протестировать на каком-нибудь "левом" ресурсе, где можно через Ctrl+V в поле вставлять данные и сразу берите установленные значения с записью в файл для анализа.
 
99%, что левый текст в проект и так не попадет, т.к. код отрабатывает мгновенно. А вот избавиться от вставки ненужных данных из переменной проекта при параллельной работе с буфером, предложенный вариант спасет.
Каким-то чудесным образом (может Шайтан вмешивается?), но как назло, то, что попадает в буфер обмена при работе где бы то ни было ещё, обязательно попадает в буфер программы или наоборот.

Листал Инет, на тему буфера. Информации много, но вот про блокировку не нашёл. Нужен более компетентный в теме специалист, тема остаётся актуальной. Работать в программе при таком коде можно только в 1 поток, да ещё и ничего не делать на компе, связанное с буфером, во время работы. Либо, как по минному полю,- сверяться, где, в какой точке находится исполнение шаблона.
 
Код:
Развернуть Свернуть Копировать
string text = project.Variables["Text"].Value;
System.Windows.Forms.Clipboard.SetText(text);
instance.ActiveTab.KeyEvent("v","press","ctrl");

Подскажите, пожалуйста, что нужно прописать в код, чтобы после вставки текста был нажат enter?
Пробовал добавить в строку instance.ActiveTab.KeyEvent("enterl") то есть:

System.Windows.Forms.Clipboard.SetText(text);
instance.ActiveTab.KeyEvent("v","press","ctrl")
instance.ActiveTab.KeyEvent("enterl")

Получаю сообщение об ошибке
 
Подскажите, пожалуйста, что нужно прописать в код, чтобы после вставки текста был нажат enter?
Код:
Развернуть Свернуть Копировать
string text = project.Variables["Text"].Value;
System.Windows.Forms.Clipboard.SetText(text);
instance.ActiveTab.KeyEvent("v","press","ctrl");
Emulator.SendKey(instance.ActiveTab.Handle, System.Windows.Forms.Keys.Enter, KeyboardEvent.Press);
или
Код:
Развернуть Свернуть Копировать
string text = project.Variables["Text"].Value;
System.Windows.Forms.Clipboard.SetText(text);
instance.ActiveTab.KeyEvent("v","press","ctrl");
instance.SendText("{ENTER}", 15);
 
  • Оценить
Реакции: SilverSun и noble
В Microsoft Word есть встроенный буфер обмена. 1 запись основная, общая с буфером Машины, и несколько других, которые хранятся где-то в другом месте. Можно ли что-то подобное и тут организовать?
 
  • Оценить
Реакции: pix
Код:
Развернуть Свернуть Копировать
string text = project.Variables["Text"].Value;
System.Windows.Forms.Clipboard.SetText(text);
instance.ActiveTab.KeyEvent("v","press","ctrl");
Emulator.SendKey(instance.ActiveTab.Handle, System.Windows.Forms.Keys.Enter, KeyboardEvent.Press);
или
Код:
Развернуть Свернуть Копировать
string text = project.Variables["Text"].Value;
System.Windows.Forms.Clipboard.SetText(text);
instance.ActiveTab.KeyEvent("v","press","ctrl");
instance.SendText("{ENTER}", 15);
Люди добрые помогите адаптировать код для сочетания клавиш CTRL + A и Delete
 
Нужно тупо очистить текст в поле сообщения.
 
Ребят, подскажите - есть сайт, после манипуляций с ним появляется кнопка "скопировать в буфер обмена", нужно из буфера записать в список, буду оч благодарен
 
Последнее редактирование:
  • Оценить
Реакции: Mikhail B.
Ребят, подскажите - есть сайт, после манипуляций с ним появляется кнопка "скопировать в буфер обмена", нужно из буфера записать в список, буду оч благодарен

C#:
Развернуть Свернуть Копировать
return System.Windows.Forms.Clipboard.GetText()

Ложим данное значение в переменную, а потом уже делаем с ней, что душе угодно.
В однопоточном режиме должно работать нормально. Если предполагается работа в многопоточном режиме, то стоит обратить внимание на эту тему и модифицировать код под себя.

clipboard.png
 
Ребят, подскажите - есть сайт, после манипуляций с ним появляется кнопка "скопировать в буфер обмена", нужно из буфера записать в список, буду оч благодарен
Должно работать, проверь)
Код:
Развернуть Свернуть Копировать
lock(SyncObjects.InputSyncer) // блокировка
{
System.Windows.Forms.Clipboard.Clear(); //чистим буфер
return System.Windows.Forms.Clipboard.GetText();
}
 
Последнее редактирование:
  • Оценить
Реакции: impul5e и GeGold
Всем огромное спасибо , вопрос решился
 

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