// 1. Ультимативный JS-перехватчик до кликаstring jsHook = @" window.zpCapturedText = ''; // Способ А: Перехват современного API (блокирует доступ к Windows) if (navigator && navigator.clipboard) { navigator.clipboard.writeText = function(text) { window.zpCapturedText = text; return Promise.resolve(); // Имитируем успех, ОС ничего не получит }; } // Способ Б: Перехват события копирования (e.preventDefault() блокирует Windows) document.addEventListener('copy', function(e) { e.preventDefault(); var text = window.getSelection().toString(); if (!text && document.activeElement) { text = document.activeElement.value; } if (text) window.zpCapturedText = text; }); // Способ В: Перехват старого execCommand (глушим выполнение) var originalExec = document.execCommand; document.execCommand = function(commandId, showUI, value) { if (commandId.toLowerCase() === 'copy') { var text = window.getSelection().toString(); if (!text && document.activeElement) { text = document.activeElement.value; } if (text) window.zpCapturedText = text; return true; // Возвращаем true, НЕ ВЫЗЫВАЯ настоящую команду браузера! } return originalExec.apply(this, arguments); };";instance.ActiveTab.MainDocument.EvaluateScript(jsHook);// 2. Кликаем по кнопке (сайт думает, что скопировал, но текст остался в нашей переменной)string xpath = $"//span[text()='Copy']"; // Замените на свой XPATHinstance.ActiveTab.MainDocument.FindElementByXPath(xpath, 0).Click();// 3. Забираем значение из JS-переменной браузера в переменную проектаfor (int i = 0; i < 40; i++){ string captured = instance.ActiveTab.MainDocument.EvaluateScript("return window.zpCapturedText;"); if (!string.IsNullOrEmpty(captured) && captured != "null" && captured != "undefined") { project.Variables["bufer"].Value = captured; break; } System.Threading.Thread.Sleep(50);}