Копирование файла в буфер обмена

neoarey

Новичок
Регистрация
16.02.2017
Сообщения
28
Благодарностей
5
Баллы
3
Доброго времени суток!​

Подскажите пожалуйста, как на C# скопировать файл в буфер обмена?

Смысл вот в чём, на яндекс почте в тело письма нужно вставить картинку. На мэйле и других сервисах всё проще, а вот у яндекса свои заморочки. Это делается либо перетаскиванием мышкой изображения (или любого другого файла) на поле где располагается текст, либо копируется на компьютере и вставляется в нужном месте. Как вставить я вроде как знаю instance.ActiveTab.KeyEvent("v","press","ctrl");, а вот как скопировать в буфер не совсем. Есть экшен в ЗП по работе с файлом, но он копирует лишь из одной директории в другую. Это не подходит для данной задачи.
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Тебе надо сначала
1. скопировать в буфер обмена
2. вставить
Смотри темку, может там найдёшь ответы
Но, скорее всего, там можно использовать стандартные методы работы с файлами
 

neoarey

Новичок
Регистрация
16.02.2017
Сообщения
28
Благодарностей
5
Баллы
3
Нашёл аналогичную тему тут http://zennolab.com/discussion/threads/kak-polozhit-kartinku-v-bufer-obmena.17183/.

Человек предложил вот такое решение:
Код:
Bitmap img = (Bitmap) Image.FromFile(@"C:\Documents and Settings\Administrator\Desktop\yandex\pic\A168E4K.jpg", true);
System.Windows.Clipboard.SetImage(img);
Но у меня возникает ошибка:
Компиляция кода Ошибка в действии "CS0234" "The type or namespace name 'Clipboard' does not exist in the namespace 'System.Windows' (are you missing an assembly reference?)". [Строка: 1; Cтолбец: 16]
Вроде библиотеки все подключены:


В чём может быть дело?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
Image img = Image.FromFile(@"C:\Documents and Settings\Administrator\Desktop\yandex\pic\A168E4K.jpg");
lock (SyncObjects.InputSyncer) {
    System.Windows.Forms.Clipboard.SetImage(img);
    instance.ActiveTab.KeyEvent("v", "press", "ctrl");
}
img.Dispose();
 

neoarey

Новичок
Регистрация
16.02.2017
Сообщения
28
Благодарностей
5
Баллы
3
Dimionix, благодарю, так получилось!
 

Polina

Client
Регистрация
29.05.2015
Сообщения
37
Благодарностей
1
Баллы
8
Аналогичная задача, но предложенное выше решение почему-то не работает.
Создаю C# код, кладу данный код, указываю свой путь к файлу, ставлю галку "не возвращать значение"
Копирование файла буфер не происходит в логе говорит об успехе:
Код:
Выполнение кода C# действия id: 74bb95a3-3da2-4f90-bcdf-e3c1b3b5af00 группы действий id: 7745cc3a-b91e-4115-9439-c2bcd987a3f7  Результат: ok
Если самостоятельно скопировать в буфер с клавиатуры, то отдельно вставка изображения работает через код:
Код:
instance.ActiveTab.KeyEvent("v", "press", "ctrl");
Подскажите пожалуйста, как решить.

Версия PM 5.11.0.0 от 05.05.17
 
Последнее редактирование:

Polina

Client
Регистрация
29.05.2015
Сообщения
37
Благодарностей
1
Баллы
8
По прежнему актуально, прошу помочь.
 

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