как перезагрузить сохраненные данные буфера обмена «Вставить исходный код»?

StackOverflow https://stackoverflow.com/questions/1025816

  •  06-07-2019
  •  | 
  •  

Вопрос

какое-то другое приложение Windows, с которым я пытаюсь взаимодействовать, сохраняет дамп буфера обмена в файл.Точнее, он ищет формат «Встроить исходный код» в буфер обмена и, если находит, сохраняет его в файл.«Встроить исходный код» — это некоторый формат на основе OLE, который создается, например, при копировании изображения из кисти.

Есть ли способ перезагрузить содержимое этих файлов обратно в буфер обмена, чтобы я мог вставить их обратно, скажем, в кисть или любую офисную программу?

В С# я пробовал

System.Windows.Forms.Clipboard.SetData("Embed Source", data);

где данные — это массив, содержащий байты файла, но он, похоже, оборачивает его дальше, прежде чем помещать данные в буфер обмена.

Кто-нибудь знает хороший способ сделать это (не обязательно на С#)?

Спасибо, р

Это было полезно?

Решение

Решено: вам нужно передать Clipboard.SetData объект потока, и при этом он не переносит данные в другой формат.

то есть

            System.IO.FileStream s = System.IO.File.Open("c:\\temp\\dxf.ole",System.IO.FileMode.Open);

        Clipboard.SetData("Embed Source", s);

        s.Close();

Тем не менее, некоторые метаданные теряются, поскольку кисть не позволяет вставлять такие перезагруженные данные, но это другой вопрос.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top