как перезагрузить сохраненные данные буфера обмена «Вставить исходный код»?
Вопрос
какое-то другое приложение 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();
Тем не менее, некоторые метаданные теряются, поскольку кисть не позволяет вставлять такие перезагруженные данные, но это другой вопрос.