Как перезагрузить сохраненные данные буфера обмена "Embed Source"? - PullRequest
0 голосов
/ 22 июня 2009

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

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

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

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

где data - это массив, содержащий байты файла, но он, кажется, оборачивает его перед размещением данных в буфере обмена.

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

Спасибо, г

1 Ответ

1 голос
/ 22 июня 2009

Решено, вам нужно передать 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();

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

...