C#保存然后通过剪贴板检索数据

时间:2011-01-19 13:05:30

标签: c# clipboard

好,

所以我有一个程序可以自动将数据复制到剪贴板然后复制到内存中。我想要做的是,在程序运行之前保存剪贴板上的数据,然后在完成我需要做的事情后将其复制回剪贴板。

我可以从剪贴板上获取数据:

IDataObject currentClipboard = Clipboard.GetDataObject();

但是,当我想将数据重新放回剪贴板时,我是否需要知道该数据用于投射它的格式?

有办法做到这一点吗?

感谢。

2 个答案:

答案 0 :(得分:2)

您无法将剪贴板可靠地恢复到以前的状态。期。使用简单的格式,您可以逃脱它。当你进入更复杂的格式,特别是OLE和私有格式时,它会复杂得多。阅读延迟渲染,你会发现数据不一定是在剪贴板上。因此,当您请求数据时,您可以将其存储起来,这将导致长时间的延迟。考虑来自Excel的5000个单元格,可以渲染成大约24种不同的格式,其中大部分使用延迟渲染(这意味着在您以特定格式请求数据之前它们不在剪贴板上,然后Excel必须生成它点播)。
即使你可以,每次恢复数据时,你都会生成一个剪贴板更新事件,该事件将发送给所有已注册的剪贴板查看器,这将对你的shennanegans作出反应。 总结:不要这样做。

答案 1 :(得分:1)

看到这篇文章,它可能有你需要的东西:

Strangeness with clipboard access