gifts2017

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

Опубликовал Алексей Главизнин (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 15
.zip 12,12Kb
15.08.14
15
.zip 12,12Kb Скачать

См. также

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

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

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

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

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

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

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