【问题标题】:Preserving clipboard on VSTO load在 VSTO 加载时保留剪贴板
【发布时间】:2012-08-09 07:55:35
【问题描述】:

我编写了一个小型应用程序来测试 Excel VSTO 的功能。但是,我遇到了一个问题。

当我启动 Excel 时,我的剪贴板被清除。我已经通过 Google 追踪到这是插件(特别是 COM 插件)的问题,如果未正确初始化,则会自动清除剪贴板。对我来说不幸的是,我不知道如何在 VSTO 中保存剪贴板,而 Google 也没有多大帮助。我不会调用任何明显会清除剪贴板的函数。 ThisAddin 函数中唯一的东西是一个 if/else 块,它从一些属性中读取并设置一些标志。

我已经考虑过将剪贴板上的数据复制到某个对象然后只是替换它的想法,但这似乎很老套,可能行不通。

谁能解释一下我的 VSTO 如何/为什么在 Excel 启动时清除剪贴板,以及我该如何补救?

编辑:

在稍微深入追踪之后,我错认为它是我的个人测试插件。我发现它要么是 Team Add-In,要么是 Adob​​e Contribute。鉴于 Adob​​e 在这些方面的记录,我会继续说它可能是贡献加载项。谢谢各位的回应。这将教会我如何使用非香草安装的 Excel 进行 VSTO 练习。

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

【问题讨论】:

  • VSTO/Excel 不会仅使用 IF/ENDIF 代码块清除剪贴板。你能分享一下你有什么代码吗?
  • @SiddharthRout 你是对的。它不可能是我的测试 VSTO。更新提供了更多细节。

标签: c# excel vsto clipboard


【解决方案1】:

最好找出正在破坏剪贴板并将其删除的插件。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      COM 插件 Adob​​e PDF Maker,蓝牙模块在 Excel 启动时清除剪贴板。禁用它以停止这种行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        相关资源
        最近更新 更多