【问题标题】:Two-way communication between VSTO add-in and a Task Pane app (JS/HTML)VSTO 加载项和任务窗格应用程序 (JS/HTML) 之间的双向通信
【发布时间】:2015-10-25 14:36:06
【问题描述】:

在桌面 Office 应用程序中运行时,是否可以让 VSTO 加载项和基于 JS/HTML 的任务窗格应用程序相互通信?

目标是使用 VSTO 连接 x 平台 Office API 中尚不存在(或永远不会存在)的功能。

【问题讨论】:

    标签: vsto office365 office365-apps office-js


    【解决方案1】:

    正如 Evgene 所提到的,没有开箱即用的功能(尽管该主题肯定已经在内部讨论中出​​现,所以我很想听听您的方案,特别是您将如何处理VSTO-only-on-the-desktop case)。

    如果您现在想尝试这个,您可能仍然可以使用一些创造性的解决方案。想象一下,您有一个带有命名范围的隐藏工作表,您将其用作 VSTO 和任务窗格应用程序之间的通信缓冲区。

    对于 VSTO => JS 通信:让任务窗格在指定范围内创建绑定,然后使用 binding-data-changed 事件侦听来自 VSTO 加载项的传入消息。

    对于 JS => VSTO 通信:让 JS 为绑定设置数据(如上所述,绑定是在指定范围内创建的)。在 VSTO 端,监听 data changed 事件,将传入的范围与命名范围的范围相交,如果相交不为空,则获取文本以获取传入的消息。

    如果您最终尝试了这种方法,请在帖子中发布它的进展情况——我很想知道。

    ~ Michael Zlatkovsky(Office 可扩展性团队的开发人员)

    【讨论】:

    • 我们实际上只关注桌面客户端;我们需要 VSTO 将启用的丰富 UI 功能。特别是,我们需要浮动窗口、更好的管理表等。基本上,对 UI 有更多的控制。我希望有类似主机对象的东西,我们可以从 VSTO/本机代码向 JS 公开。对于跨平台代码,我想,JS 代码只是检查这个对象,如果它不可用则忽略不相关的功能。我们将尝试您的方法,看看我们如何使其发挥作用:)
    • @Sameera,听起来不错,祝你好运!顺便说一句,如果两者之间有某种“互操作”方式进行交流(只是试图理解场景并收集思考​​的食物,这绝不意味着我们正在承诺任何事情!),你会想象吗?您分别发布 VSTO 加载项和 JS 加载项(您现在必须这样做吗?)。优点是 JS 插件可想而知可以是半独立的,但要依赖它的“老大哥”。但协调起来可能会更棘手。或者您会想象更多类似 WinForms 的控件,它嵌入浏览器并让两者进行通信?..
    • 是的,Michael,我们实际上正在努力开发一个独立的 JS 插件,如果有 VSTO 插件,它会获得“动力提升”:) 在网络上,它可以通过限制启用功能API 的;在桌面上,它将与 VSTO 插件一起使用,以获得更丰富的功能和用户体验。
    • @MichaelZlatkovsky 我们可以期待 Office 应用程序和 COM 加载项之间的通信不会通过引入所描述的变通办法来发明轮子吗?
    • @EugeneAstafiev,最好了解确切的场景,以及您如何设想通信和部署的发生(与我在上面对 Sameera 所做的评论相同)。我鼓励您在officespdev.uservoice.com 上提出建议(并在此处发布链接),描述您的具体设想。我们可能会首先解决其他优先级更高的项目,但在 UserVoice 上输入想法并参与对话将是推进该想法的最佳方式。
    【解决方案2】:

    需要承认基于 VSTO 的加载项只能在 Windows 和桌面客户端上运行。这种场景不支持其他平台。

    无论如何,VSTO 和邮件应用程序 (JS/HTML) 都没有提供任何开箱即用的东西。

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 2013-02-11
      • 2012-01-27
      • 2019-05-19
      • 1970-01-01
      相关资源
      最近更新 更多