Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
В качестве имени переменной использовать надо не макрос переменной ({-Variable.readytext-}), а только её имя - readytext (макросы вообще в коде использовать нельзя!)
Правильно так project.Variables["readytext"].Value
Да, есть проблема, не работает этот код в Хромиуме instance.ActiveTab.KeyEvent("v","press","ctrl");
Будет исправлено в след. билдах.
А пока можно попробовать обойти проблему таким вариантом: instance.SendText("{CTRLDOWN}v{CTRLUP}", 15);
Да, есть проблема, не работает этот код в Хромиуме instance.ActiveTab.KeyEvent("v","press","ctrl");
Будет исправлено в след. билдах.
А пока можно попробовать обойти проблему таким вариантом: instance.SendText("{CTRLDOWN}v{CTRLUP}", 15);
Скажите пожалуйста вот так вставляю но что бо бывает с буфером не понятное дублируется
/ сохраняем нужный текст в буфер и вставляем его (программно делаем CTRL+V)
System.Windows.Forms.Clipboard.SetText(descr);
instance.SendText("{CTRLDOWN}v{CTRLUP}", 15);
как очистить после вставки полностью , вот нашел
// стираем буфер и возвращаем его к первоначальному состоянию
System.Windows.Forms.Clipboard.Clear();
System.Windows.Forms.Clipboard.SetText(previous_text);
только что в переменную пустоту string previous_text = ""; ? или достаточно System.Windows.Forms.Clipboard.Clear(); для нормальной работы? Спасибо
Иногда при постинге на чьём-то 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 на свою - в ней находится ваш текст для вставки.
Это просто божественно, ты сохранил огромное количество моего временни, я никогда не пишу на форумах. Но тут я не удержался.
Низкий поклон и огромная благодарность )))))
Здравствуйте, нужна срочная помощь, по данной теме, в общем у меня есть написанный код созданием и дальнейшим копированием email-адреса(копирование происходит по кнопке), а далее мне нужно вставить этот email на другой сайт, но как мне это сделать? Не могу найти не один код, который мне подходит.
Спасибо всем за сниппеты кода на C#, но мне ни один из них не подошел по разным причинам. Посмотрел через chrome dev tools какие события происходят при вставке из буфера через команду monitorEvents($0) и далее обратился к chatgpt. В итоге получил такой вариант, работающий на JS. Пользуйтесь))
Вставка текста из буфера обмена с эмуляцией событий нажатия ctrl+v на JavaScript:
// Автор кода - chatgpt
// Найдем элемент по XPath
var xpathExpression = "//input"; // Замените на свой XPath
var targetElement = document.evaluate(xpathExpression, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
// Проверим, что элемент найден
if (targetElement) {
// Текст для вставки
var textToPaste = "{-Variable.substring-}"; // Тут ваша переменная с текстом
// Далее эмулируем те же события, что и в хром дев тулс через monitorEvents($0)
// Создаем событие keydown для Ctrl
var ctrlKeyDownEvent = new KeyboardEvent("keydown", { key: "Control" });
// Создаем событие keydown для V
var vKeyDownEvent = new KeyboardEvent("keydown", { key: "v", ctrlKey: true });
// Создаем событие keyup для Ctrl
var ctrlKeyUpEvent = new KeyboardEvent("keyup", { key: "Control" });
// Создаем событие keyup для V
var vKeyUpEvent = new KeyboardEvent("keyup", { key: "v", ctrlKey: true });
// Диспетчеризируем события
targetElement.dispatchEvent(ctrlKeyDownEvent);
targetElement.dispatchEvent(vKeyDownEvent);
// Вставляем текст в элемент
targetElement.value = textToPaste; // Если элемент - это input или textarea
targetElement.dispatchEvent(vKeyUpEvent);
targetElement.dispatchEvent(ctrlKeyUpEvent);
}
Спасибо всем за сниппеты кода на C#, но мне ни один из них не подошел по разным причинам. Посмотрел через chrome dev tools какие события происходят при вставке из буфера через команду monitorEvents($0) и далее обратился к chatgpt. В итоге получил такой вариант, работающий на JS. Пользуйтесь))
Вставка текста из буфера обмена с эмуляцией событий нажатия ctrl+v на JavaScript:
// Автор кода - chatgpt
// Найдем элемент по XPath
var xpathExpression = "//input"; // Замените на свой XPath
var targetElement = document.evaluate(xpathExpression, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
// Проверим, что элемент найден
if (targetElement) {
// Текст для вставки
var textToPaste = "{-Variable.substring-}"; // Тут ваша переменная с текстом
// Далее эмулируем те же события, что и в хром дев тулс через monitorEvents($0)
// Создаем событие keydown для Ctrl
var ctrlKeyDownEvent = new KeyboardEvent("keydown", { key: "Control" });
// Создаем событие keydown для V
var vKeyDownEvent = new KeyboardEvent("keydown", { key: "v", ctrlKey: true });
// Создаем событие keyup для Ctrl
var ctrlKeyUpEvent = new KeyboardEvent("keyup", { key: "Control" });
// Создаем событие keyup для V
var vKeyUpEvent = new KeyboardEvent("keyup", { key: "v", ctrlKey: true });
// Диспетчеризируем события
targetElement.dispatchEvent(ctrlKeyDownEvent);
targetElement.dispatchEvent(vKeyDownEvent);
// Вставляем текст в элемент
targetElement.value = textToPaste; // Если элемент - это input или textarea
targetElement.dispatchEvent(vKeyUpEvent);
targetElement.dispatchEvent(ctrlKeyUpEvent);
}
Не, тут просто сайту показывает как будто control+v юзер нажал и все. Вставка идет как через value в нужный текст (как через кубик установить значение value). К буферу никакого отношения не имеет.
Не, тут просто сайту показывает как будто control+v юзер нажал и все. Вставка идет как через value в нужный текст (как через кубик установить значение value). К буферу никакого отношения не имеет.
Хитро)) как вариант эмуляции кстати. Не всегда удобно буфер забивать. А использования буфера базовая возможность и не вызовет вопросов у сайта (если только у очень придирчивого).
А то эмуль клавы вбивал левые keys. Не так то много полностью рабочих эмуляций ввода в зенке. Проще буфером шарахнуть
Спасибо всем за сниппеты кода на C#, но мне ни один из них не подошел по разным причинам. Посмотрел через chrome dev tools какие события происходят при вставке из буфера через команду monitorEvents($0) и далее обратился к chatgpt. В итоге получил такой вариант, работающий на JS. Пользуйтесь))
Вставка текста из буфера обмена с эмуляцией событий нажатия ctrl+v на JavaScript:
// Автор кода - chatgpt
// Найдем элемент по XPath
var xpathExpression = "//input"; // Замените на свой XPath
var targetElement = document.evaluate(xpathExpression, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
// Проверим, что элемент найден
if (targetElement) {
// Текст для вставки
var textToPaste = "{-Variable.substring-}"; // Тут ваша переменная с текстом
// Далее эмулируем те же события, что и в хром дев тулс через monitorEvents($0)
// Создаем событие keydown для Ctrl
var ctrlKeyDownEvent = new KeyboardEvent("keydown", { key: "Control" });
// Создаем событие keydown для V
var vKeyDownEvent = new KeyboardEvent("keydown", { key: "v", ctrlKey: true });
// Создаем событие keyup для Ctrl
var ctrlKeyUpEvent = new KeyboardEvent("keyup", { key: "Control" });
// Создаем событие keyup для V
var vKeyUpEvent = new KeyboardEvent("keyup", { key: "v", ctrlKey: true });
// Диспетчеризируем события
targetElement.dispatchEvent(ctrlKeyDownEvent);
targetElement.dispatchEvent(vKeyDownEvent);
// Вставляем текст в элемент
targetElement.value = textToPaste; // Если элемент - это input или textarea
targetElement.dispatchEvent(vKeyUpEvent);
targetElement.dispatchEvent(ctrlKeyUpEvent);
}
Да, корректно, потому что как таковой буфер обмена ОС тут не используется. Мы эмулируем вставку контента через JS-события, минуя буфер обмена ОС. Как раз все предложенные варианты в теме мне не подошли отчасти из-за проблем с многопотоком, а также из-за проблем с буфером. Потому что во время работы зенки не получится пользоваться ctrl+c, т к туда попадали значения из шаблона
Да, корректно, потому что как таковой буфер обмена ОС тут не используется. Мы эмулируем вставку контента через JS-события, минуя буфер обмена ОС. Как раз все предложенные варианты в теме мне не подошли отчасти из-за проблем с многопотоком, а также из-за проблем с буфером. Потому что во время работы зенки не получится пользоваться ctrl+c, т к туда попадали значения из шаблона
Спасибо всем за сниппеты кода на C#, но мне ни один из них не подошел по разным причинам. Посмотрел через chrome dev tools какие события происходят при вставке из буфера через команду monitorEvents($0) и далее обратился к chatgpt. В итоге получил такой вариант, работающий на JS. Пользуйтесь))
Вставка текста из буфера обмена с эмуляцией событий нажатия ctrl+v на JavaScript:
// Автор кода - chatgpt
// Найдем элемент по XPath
var xpathExpression = "//input"; // Замените на свой XPath
var targetElement = document.evaluate(xpathExpression, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
// Проверим, что элемент найден
if (targetElement) {
// Текст для вставки
var textToPaste = "{-Variable.substring-}"; // Тут ваша переменная с текстом
// Далее эмулируем те же события, что и в хром дев тулс через monitorEvents($0)
// Создаем событие keydown для Ctrl
var ctrlKeyDownEvent = new KeyboardEvent("keydown", { key: "Control" });
// Создаем событие keydown для V
var vKeyDownEvent = new KeyboardEvent("keydown", { key: "v", ctrlKey: true });
// Создаем событие keyup для Ctrl
var ctrlKeyUpEvent = new KeyboardEvent("keyup", { key: "Control" });
// Создаем событие keyup для V
var vKeyUpEvent = new KeyboardEvent("keyup", { key: "v", ctrlKey: true });
// Диспетчеризируем события
targetElement.dispatchEvent(ctrlKeyDownEvent);
targetElement.dispatchEvent(vKeyDownEvent);
// Вставляем текст в элемент
targetElement.value = textToPaste; // Если элемент - это input или textarea
targetElement.dispatchEvent(vKeyUpEvent);
targetElement.dispatchEvent(ctrlKeyUpEvent);
}
Замечательно!)
Наконецто решение с быстрой вставкой текста появилось.
На веб версии ИИ сайтов особенно где генерируется результат в виде текста, есть кнопка COPY (именно этот вариант) которая в буфер помещает результат - такое можно сохранять без использования буфера Windows?
Спасибо всем за сниппеты кода на C#, но мне ни один из них не подошел по разным причинам. Посмотрел через chrome dev tools какие события происходят при вставке из буфера через команду monitorEvents($0) и далее обратился к chatgpt. В итоге получил такой вариант, работающий на JS. Пользуйтесь))
Вставка текста из буфера обмена с эмуляцией событий нажатия ctrl+v на JavaScript:
// Автор кода - chatgpt
// Найдем элемент по XPath
var xpathExpression = "//input"; // Замените на свой XPath
var targetElement = document.evaluate(xpathExpression, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
// Проверим, что элемент найден
if (targetElement) {
// Текст для вставки
var textToPaste = "{-Variable.substring-}"; // Тут ваша переменная с текстом
// Далее эмулируем те же события, что и в хром дев тулс через monitorEvents($0)
// Создаем событие keydown для Ctrl
var ctrlKeyDownEvent = new KeyboardEvent("keydown", { key: "Control" });
// Создаем событие keydown для V
var vKeyDownEvent = new KeyboardEvent("keydown", { key: "v", ctrlKey: true });
// Создаем событие keyup для Ctrl
var ctrlKeyUpEvent = new KeyboardEvent("keyup", { key: "Control" });
// Создаем событие keyup для V
var vKeyUpEvent = new KeyboardEvent("keyup", { key: "v", ctrlKey: true });
// Диспетчеризируем события
targetElement.dispatchEvent(ctrlKeyDownEvent);
targetElement.dispatchEvent(vKeyDownEvent);
// Вставляем текст в элемент
targetElement.value = textToPaste; // Если элемент - это input или textarea
targetElement.dispatchEvent(vKeyUpEvent);
targetElement.dispatchEvent(ctrlKeyUpEvent);
}
Спасибо всем за сниппеты кода на C#, но мне ни один из них не подошел по разным причинам. Посмотрел через chrome dev tools какие события происходят при вставке из буфера через команду monitorEvents($0) и далее обратился к chatgpt. В итоге получил такой вариант, работающий на JS. Пользуйтесь))
Вставка текста из буфера обмена с эмуляцией событий нажатия ctrl+v на JavaScript:
// Автор кода - chatgpt
// Найдем элемент по XPath
var xpathExpression = "//input"; // Замените на свой XPath
var targetElement = document.evaluate(xpathExpression, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
// Проверим, что элемент найден
if (targetElement) {
// Текст для вставки
var textToPaste = "{-Variable.substring-}"; // Тут ваша переменная с текстом
// Далее эмулируем те же события, что и в хром дев тулс через monitorEvents($0)
// Создаем событие keydown для Ctrl
var ctrlKeyDownEvent = new KeyboardEvent("keydown", { key: "Control" });
// Создаем событие keydown для V
var vKeyDownEvent = new KeyboardEvent("keydown", { key: "v", ctrlKey: true });
// Создаем событие keyup для Ctrl
var ctrlKeyUpEvent = new KeyboardEvent("keyup", { key: "Control" });
// Создаем событие keyup для V
var vKeyUpEvent = new KeyboardEvent("keyup", { key: "v", ctrlKey: true });
// Диспетчеризируем события
targetElement.dispatchEvent(ctrlKeyDownEvent);
targetElement.dispatchEvent(vKeyDownEvent);
// Вставляем текст в элемент
targetElement.value = textToPaste; // Если элемент - это input или textarea
targetElement.dispatchEvent(vKeyUpEvent);
targetElement.dispatchEvent(ctrlKeyUpEvent);
}
// сохраняем объедененный вами ранее текст в буфер производим действие {CTRL+V}
System.Windows.Forms.Clipboard.SetText(text);
instance.ActiveTab.KeyEvent("v","press","ctrl");
// чистим буфер и возвращаем его к первоначальному состоянию
System.Windows.Forms.Clipboard.Clear();
System.Windows.Forms.Clipboard.SetText(previous_text);
}