在VSTO加载时保留剪贴板

时间:2012-08-09 07:55:36

标签: c# excel vsto clipboard

我已经编写了一个小应用程序作为测试,以了解Excel VSTO的功能。但是,我遇到了一个问题。

当我启动Excel时,我的剪贴板被清除。我已经通过Google追踪这个问题,因为加载项(特别是COM加载项)在未正确初始化时会自动清除剪贴板。对我来说不幸的是,我不知道如何在VSTO中保留剪贴板,谷歌也没什么帮助。我不会调用任何明显会清除剪贴板的功能。 ThisAddin函数中唯一的东西是if / else块,它从一些属性读取并设置一些标志。

我已经仔细考虑过将剪贴板上的数据复制到某个对象的想法,然后只是替换它,但这似乎非常hacky并且可能无法正常工作。

任何人都可以了解我的VSTO在Excel启动时如何/为何清除剪贴板以及如何解决它?

编辑:

在进行了更深入的跟踪之后我认为它是我的人员测试加载项是错误的。我发现它是Team Add-In或Adobe Contribute。考虑到Adobe在这些方面的记录,我会继续说它可能是贡献加载项。谢谢各位的回应。这将教会我使用非vanilla安装的Excel进行VSTO练习。

我将打开此主题,以便更多人可以为VSTO Excel加载项(或办公套件的任何加载项)在启动时清除剪贴板的可能原因做出贡献。

3 个答案:

答案 0 :(得分:1)

最好找出丢弃剪贴板并将其删除的插件。

如果这不是一个选项,请查看Chris链接中的一些答案。我之前使用Win32 API完成了这项工作。我认为列出的答案中缺少的是对OpenClipboard(http://msdn.microsoft.com/en-us/library/windows/desktop/ms649048%28v=vs.85%29.aspx)和CloseClipboard的调用。

答案 1 :(得分:0)

当存在复杂数据类型时,尝试备份/恢复剪贴板是愚蠢的。并且您将生成不需要的剪贴板事件。请参阅我之前的回答: https://stackoverflow.com/a/2579846/289135

答案 2 :(得分:0)

COM插件Adobe PDF Maker,蓝牙模块在Excel启动时清除剪贴板。禁用它可以停止此行为。