В буфер обмена из переменной значение, в котором путь к файлу

lx2003

Client
Регистрация
15.02.2021
Сообщения
611
Благодарностей
145
Баллы
43
Здравствуйте!

Как правильно сделать на C#, чтобы поместить в буфер обмена из переменной значение, в котором путь к файлу?

Когда делаю Ctrl+C из папки в проводнике, а затем вставляю на сайт с помощью скрипта C#, скрипт работает.
Если из значения переменной добавить в буфер обмена, не обрабатывается как файл, а обрабатывается как строка и скрипт на странице сайта не работает.

//Поместить в буфер обмена
System.Windows.Forms.Clipboard.SetText(@project.Variables["file"].Value);
//Вставить на страницу сайта с помощью Ctrl+V
instance.ActiveTab.KeyEvent("v", "press", "ctrl");
 

Alex91

Активный пользователь
Регистрация
15.08.2024
Сообщения
327
Благодарностей
83
Баллы
28
Потому что файл, это объект системы, а не строка. Помещать в буфер нужно именно объект.
Примеров тут на форуме нет, только с HTML кодом есть, поэтому лучше попросить код у ИИ.
А если сайт поддерживает скидывание файла по типу драг и дроп, то можно поискать по форуму код который кидает файл. Такюм как раз надо путь к файлу указать.
 
  • Спасибо
Реакции: lx2003

lx2003

Client
Регистрация
15.02.2021
Сообщения
611
Благодарностей
145
Баллы
43
Потому что файл, это объект системы, а не строка. Помещать в буфер нужно именно объект.
Примеров тут на форуме нет, только с HTML кодом есть, поэтому лучше попросить код у ИИ.
А если сайт поддерживает скидывание файла по типу драг и дроп, то можно поискать по форуму код который кидает файл. Такюм как раз надо путь к файлу указать.
Собственно, спросил у ИИ.
И вот решение.
C#. Файл успешно скопирован в буфер обмена и вставлен на сайт:
string filePath = project.Variables["file"].Value;

// Убедитесь, что имя файла передано в аргументах
if (filePath.Length == 0)
{
    project.SendInfoToLog("Пожалуйста, укажите имя файла.");
    return "Пожалуйста, укажите имя файла.";
}

// Проверка существования файла
if (!File.Exists(filePath))
{
    project.SendInfoToLog("Файл не найден: " + filePath);
    return "Файл не найден: " + filePath;
}

try
{
    // Создание объекта DataObject для буфера обмена
    DataObject dataObject = new DataObject();
    StringCollection filePaths = new StringCollection();
    filePaths.Add(filePath);
    dataObject.SetFileDropList(filePaths);
    System.Windows.Forms.Clipboard.SetDataObject(dataObject, true);

    project.SendInfoToLog("Файл успешно скопирован в буфер обмена.");
    instance.ActiveTab.KeyEvent("v", "press", "ctrl");
}
catch (Exception ex)
{
    project.SendInfoToLog("Ошибка: " + ex.Message);
}
 

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