0

我们需要复制并重新发布剪贴板中的内容——所有格式。有没有办法做到这一点?

这是用例。我们有一些小的 docx/pptx/xlsx 文档,在我们的 Office 插件中,我们希望用户能够拖放到 word/ppt/xl 中。不幸的是,最好的文档格式是 html,它与实际的 docx/pptx/xlsx 不太接近。

所以,我的想法是我们(以 Word 为例)创建一个 Word Document 对象的实例(我们的代码是一个 Word AddIn,所以根据定义 Word 正在运行)。然后我们调用该 Document 对象以选择所有对象,然后粘贴选择。

此时剪贴板包含该粘贴的文档。包括 Word 用于在 Word 文档中复制/粘贴的未记录格式。这就是我们想要使用的格式。

如果我们可以将所有剪贴板内容复制到我们实现 IDataObject 的对象中并将该对象传递给 Control.DoDragDrop(),那么当用户将其放在 Word 中的某个位置时,他们会将其以未记录的格式提供给 Word具有所有 docx 格式。

有没有办法做到这一点?

更新:我们需要拖放文件内容(不仅仅是文本、完全格式化的文本、表格、形状、图表等)。

更新 2:我们需要将此作为 IDataObject 传递给 DoDragDrop(),而不是从剪贴板进行粘贴。当它发生时我们不需要得到通知,因为我们已经将 IDataObject 传递给 Windows 并且 Windows 从那里获取它。

4

1 回答 1

0

事实证明有一个调用 - Clipboard.GetDataObject()。

于 2016-12-22T20:28:39.990 回答