Сохранение текста и картинок(скриншотов) в файл из буфера обмена

Опубликовал Алексей Главизнин (realchel) в раздел Программирование - Внешние компоненты

Внешняя компонента для сохранение содержимого буфера обмена в файл во временном каталоге, и возвращении пути к файлу в 1С.
Возникла необходимость сохранять данные из буфера обмена в текст или картинку в зависимости от содержимого. 
Что бы потом прикреплять к объектам в 1С.
Находил разные компоненты, которые либо только текст либо только картинку сохраняют.
Написал свою.
Написано на C# поэтому требуется Microsoft .NET Framework 4
Шаблон компоненты на С# взят у  Kuzja_R за что ему респект.


Пока все просто, инициализируем компоненту, и вызываем функцию сохранения.
Файл сохраняется во временном каталоге системы, имя файла случайно генерится.
Можно передать свое имя файла(только имя файла без пути и расширения)
Картинка сохраняется в png.
Если в буфер скопирован сложный объект, например текст и картинки.
То сохраняется только текст.

В планах:
  • Возвращать массив с именами файлов, если в буфер скопировали файлы.
  • Разбирать сложные объекты из текста и картинок и сохранять в отдельные файлы.
  • Ждать предложений от Вас.

Установка:
  1. Устанавливаем Framework 4
  2. Библиотеку и батник копируем в Windows /System32 (либо в другое место, тогда в батнике пути поменять)
  3. Запускаем батник под админом.


Использование:
(пример обработку с управляемой формой приложил)
В ней несколько функций с небольшими комментариями.


Работа простая(далее пример без попыток и исключений, в обработке все как надо)

ПодключитьВнешнююКомпоненту("AddIn.ClipBoardToFile") 
Компонента = Новый("AddIn.ClipBoardToFile");
ИмяФайла="СкринШот_123"
Результат=Компонента.SaveClipBoardToFile(ИмяФайла);


Жду вопросов и предложений.

UPD(13.08.2014)
Кто хочет потестить бесплатно(не за 1-у монету:) повышайте мне рейтинг:) и пишите в личку, скину на мыло.

PS Сейчас работаю над вытаскиванием всех картинок из буфера.
Для файлов MS Office решаемо, для остальных вариантов разбираюсь.
(Если у кого есть опыт , буду рад помощи, т.к. информации в инете ноль.)
Как будет все причесано, исходники выложу, но за 10 монет :)


UPD2(15.08.2014)
Новая функция SaveClipBoardToFileArray
Возвращает COMSafeArray содержащий массив строк с файлами.
Если пустой, значит ошибка и смотрим в свойстве компоненты LastError

Функция универсальная.
Работает как с простым копирование текста или картинки, так и с выделением большого количества объектов.
Проверено на приложениях MS Office и веб страницах
Например если выделить область или весь лист в MS EXCEL или MS Word
То будет несколько файлов, один со всем текстом, остальные с картинками.
При этом все объекты, такие как диаграммы, графики и т.д., будут пребразованы в картинки.
(Объекты кстати также можно по отдельности копировать и сохранять функцией SaveClipBoardToPicture,либо скопировать)
Так же эта функция возвращает список файлов скопированных в проводнике.
Так же при выделении области в инет браузере, будут скачены все картинки и будет сохранено несколько файлов , один с текстом и со всеми скаченными картинками.
По другим видам объектов при копировании в буфер, если у скопированного объекта нет формата HTML,
то будет сохранены два файла, текст и картинка со всем выделенным объектом.
Если же есть только текст то будет только текст
Если же есть только картинка то будет сохранена картинка с выделенной областью объекта.
Например в MS PowerPoint при выделении слайда, будет сохранена одна картинка в виде всего слайда(к сожалению только без фона)







Скачать файлы

Наименование Файл Версия Размер
ClipBoardToFile
.zip 12,12Kb
15.08.14
15
.zip 12,12Kb 15 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Armando Armando (Armando) 1370 11.08.14 23:49 Сейчас в теме
По технологии native тож самое можешь?
2. Алексей Главизнин (realchel) 5 12.08.14 01:23 Сейчас в теме
Это вряд ли.
Я взял готовый шаблон на С#
добавил только свой функционал.
Если будет шаблон, то функционал добавить не проблема.
3. Алексей Ситников (SiAl) 67 12.08.14 17:47 Сейчас в теме
Не проще было скачать и установить AutoIt и использовать его COM-сервер - AutoItX?
4. Алексей Главизнин (realchel) 5 12.08.14 23:09 Сейчас в теме
(3) SiAl,
Ни один нормальный сисадмин не поставит на компы пользователей AutoIt.
5. Андрей Акулов (DrAku1a) 1186 13.08.14 03:15 Сейчас в теме
(1) Чего там мочь то ))
А вот сделать бы такую операцию без ВК......
6. Алексей Главизнин (realchel) 5 13.08.14 11:35 Сейчас в теме
(5) DrAku1a,
Про чего там мочь это ты про Натив пишешь или в целом про работу с буфером
Если про натив подскажи как это в C# сделать , может пример или шаблон есть.

7. Алексей Ситников (SiAl) 67 13.08.14 13:28 Сейчас в теме
(4) realchel, ну с таким успехом из винды пусть "нормальный админ" и Windows Scripting Host выпиливает.
8. Алексей Главизнин (realchel) 5 13.08.14 17:16 Сейчас в теме
(7) SiAl,
Не надо путать теплое с мягким и круглое с белым:) Это софт разного уровня.

Поискав скрипты на AutoIt которые бы сохраняли картинки в файл, не нашел.
Не нашел и как получить содержание буфера(хотя бы определить что там картинка или текст)
Уверен что даже если что то подобное есть в COM сервере, то использование его со стороны не ограничится вызовом одной функции.
Кроме того уверен, что AutoIt не распарсит буфер обмена скопированный с ворда или эксель и не раскидает это по файлам.
Можете либо предоставить пример!?
Либо прекратить переписку, в связи с несостоятельностью доводов в пользу autoit

9. Armando Armando (Armando) 1370 13.08.14 22:01 Сейчас в теме
(5) DrAku1a,
Чего там мочь то ))

Почему-то до сих пор никто не сделал. Я бы скачал, ибо есть где применить.

А вот сделать бы такую операцию без ВК......

У меня что-то похожее есть, но только для картинок
http://infostart.ru/public/280083/
10. Алексей Главизнин (realchel) 5 15.08.14 00:13 Сейчас в теме
(9) Armando,
В твоем примере, не вижу преимущества внешнего консольного приложения перед ВК
Только разве что использовать в командной строке и там где DLL нельзя подключить
11. Armando Armando (Armando) 1370 15.08.14 22:16 Сейчас в теме
(10) realchel, я про преимущество ничего не сказал. Мне самому это не нравится. Поэтому и спрашиваю про нативную ВК. Мне надо чтоб можно было работать с файлами и картинками.
12. Алексей Главизнин (realchel) 5 16.08.14 01:51 Сейчас в теме
(11) Armando,
Будет шаблон, будет пища:)
13. Armando Armando (Armando) 1370 16.08.14 14:04 Сейчас в теме
14. Яков Коган (Yashazz) 1957 19.08.14 00:17 Сейчас в теме
Ищите и да обрящете, ибо это было на ИС, было и в нативном исполнении, если не ошибаюсь. Поручик, вроде бы, делал.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа