问题标签 [comaddin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
2083 浏览

c# - 无法将“System.__ComObject”类型的 COM 对象转换为接口类型“Microsoft.Office.Core.IRibbonUI”

嗨,我是 excel 插件的新手。我已经安装了 microsoft office 2010,并且我的插件曾经完美地工作。为了在 2013 年验证,我已经安装了 2013 并且正在运行 2010 和 2013 版本。最近我安装了 2013,现在如果我打开 2010 版本,我的插件会加载但会出现以下错误。请帮忙

错误

0 投票
1 回答
44 浏览

ms-office - Windows 8.1 上的 Office 2013 插件不兼容

我有一个 Office 2013 COM 插件,它在 Windows 7 Prof. 上运行良好,但在 Windows 8.1 上它不显示。两台机器都安装了 Office 2013。

当我检查 8.1 机器上的 AddIn-Options 时,我在活动的 AddIns 下找到了我的 COM AddIn(位置:mscoree.dll,输入:COM Add In)

但是将后台菜单扩展了一个选项卡的插件没有显示出来。

是否有任何特定于 8.1 的选项或我必须考虑的其他事项?

0 投票
1 回答
210 浏览

com - 创建一个基本的、非托管的 Outlook/Office 插件

2016 年 3 月 3 日

我想使用 C++ 为 Microsoft Outlook/Office 编写一个纯粹的、裸露的、非托管的 COM 插件。Visual Studio 强制您使用活动模板库并隐藏主机 (Outlook) 如何连接到插件的所有基本实现。以下是我目前所知道的一些背景知识:

  1. 我知道 COM 的基本原理以及它是如何工作的。根据我对架构的理解,我得出的结论是,既然 Outlook 是在 COM 之上编写的,那么我当然应该能够查询它的接口并操作应用程序。

  2. 我知道我需要使用 IDTExtensibility2 接口来连接办公应用程序。有谁知道这个接口的定义所在的头文件的名称?

  3. 我知道我需要在注册表中注册插件。这是一个 COM 服务器,所以这是意料之中的。

除了这些点,我迷路了。我需要知道第 1 步。任何人都可以提供任何类型的参考或一些代码吗?

作为记录,我不想使用 VS,因为我想知道如何从头开始创建插件。我想知道需要哪些组件,而不是包中提供的内容。

编辑 3/4/16

所以我偶然发现了 MSDN 上的这个链接:

https://msdn.microsoft.com/en-us/library/office/ff867268.aspx

我不知道我是怎么错过的,但它看起来是一个很好的起点。我想我唯一的挂断是使用什么标题。这可能是一次冒险,我必须冒险找出裸骨插件需要哪些。我会做一些研究并报告回这个线程。

0 投票
1 回答
317 浏览

outlook-addin - 带有 PS_INTERNET_HEADERS 字段的 Outlook 表单区域

我正在创建一个 Microsoft Outlook 加载项(Visual Studio 2012、C#、COM 加载项,无 VSTO,Outlook 2010/2013/2016),其中 1) 用户必须能够编写和读取必须映射到的各种字段/当消息离开/进入 Microsoft Exchange 时来自 MIME 标头,以及 2) 字段必须可用作本机 Outlook 字段,以便在 Outlook 视图、搜索表达式等中用作列。

要获得 1),加载项读取和写入 PS_INTERNET_HEADERS 命名空间中的 (MAPI) 字段。首次加载加载项时,它会创建一个虚拟隐藏消息,以确保 Exchange 强制执行传入消息的 MIME 标头和 MAPI 属性之间的映射(解决命名属性、X-Headers 和 You中描述的问题) . 这很好用。

为了获得 2),我创建了一个老式的 Outlook 表单配置文件(创建表单配置文件),其中包含以下条目:

然后我使用 Outlook Redemption 在加载项加载时注册表单。现在用户可以将字段 Foo 用作其他 Outlook 字段。

现在,我的问题是,当我使用 Outlook 表单设计器创建表单区域时,如果我尝试添加字段 Foo,我会收到一条错误消息,提示“操作失败”。如果我将 NmidPropset 值从 PS_INTERNET_HEADERS (00020386-0000-0000-C000-000000000046) 更改为 PS_PUBLIC_STRINGS (00020329-0000-0000-C000-000000000046),我可以添加字段 Foo,但是 1) 不起作用。

因此我的问题是:如何将命名空间 PS_INTERNET_HEADERS 中的字段添加到 Outlook 表单区域,从而满足要求 1) 和 2)?

0 投票
2 回答
480 浏览

c# - 在某些 Outlook 版本中转发时未正确复制 Internet 标头

我正在创建一个 Microsoft Outlook 加载项(Visual Studio 2012、C#、COM 加载项,无 VSTO,Outlook 2010/2013/2016),用户必须能够在其中编写和读取必须映射到/从的各种字段消息离开/进入 Microsoft Exchange 时的 MIME 标头(即来自命名空间 PS_INTERNET_HEADERS 的属性)。

当用户转发消息时,我想将原始消息中的属性复制到转发的消息中。我通过监听事件 Application.ItemLoad 和 MailItem.Forward 来做到这一点,其中复制发生在后者的事件处理程序中。

这在我的开发机器上的 Outlook 2013 版本 15.0.4771.1000 中运行良好,但在虚拟机上运行的 Outlook 2013 版本 15.0.4771.1000 中却不行。在具有 Outlook 2010 的其他虚拟机上,它也不起作用。

问题是,如果我在 Inspectors.NewInspector 的事件处理程序中读取转发消息的属性值,我会意外得到空值。但是,如果我更改主题,保存转发消息的草稿并重新打开它,则属性值符合预期。因此,属性以某种方式发生了变化,但是当我第一次在 NewInspector 的事件处理程序中读取它们时,这并没有反映出来。我做错了什么?

下面是一些展示问题的示例代码。我只包含了我认为证明问题所必需的清理代码。

0 投票
1 回答
1303 浏览

c# - 签署办公室 COM 加载项

我开发了一个基于 NetOffice 的扩展。我的办公室配置要求应用程序由受信任的发布者签名。我尝试使用有效证书使用 signtool.exe 对输出 DLL 进行签名,但不幸的是,Office 显示“没有可用的数字签名”。

该选项可以通过以下方式启用:

文件→选项→信任中心→信任中心设置→加载项→要求应用程序加载项由受信任的发布者签名

签署 DLL 的适当方法是什么?

使用 VSTO 时,ClickOnce 处理签名,还有一个为 DLL 创建的 .manifest 文件,我不确定它是否需要,但我无法为我的类库创建一个。

我在网上找到的一些资料:

0 投票
1 回答
1059 浏览

vba - 如何在 VBA 中访问自定义加载项功能区复选框?

我现在已经花了 2 天时间尝试和搜索,但似乎没有任何效果......

我在 VSTO 中为 Visio 创建了一个自定义功能区加载项,它可以安装并且按钮工作正常。我最近刚刚在功能区中添加了几个复选框,我想从 VBA 项目中读取它们的状态。

我一生都无法弄清楚如何访问 VBA 中的复选框状态。我用 CommandBars 和 ToolBars 尝试了很多东西,但一无所获,然后我发现这个演练似乎很有希望,并按照它使加载项的方法对 VBA 可见:https ://msdn.microsoft.com/en-us/图书馆/bb608614

VBA 代码确实识别了加载项,并且我分配了加载项对象,但是当我尝试调用对象的函数(getIOPressedState 是指其中一个复选框的状态)时,我得到“对象不支持此属性或方法”。

我在这里错过了什么吗?

这是我想要显示的功能区类

这个插件.vb

Visio VBA 代码

0 投票
0 回答
101 浏览

delphi - 使用createoleobject将路透社COM插件自动加载到excel 2013中

我正在尝试通过使用 createoleobject 在 delphi 应用程序中加载 Thomson Reuters com 插件,但无法找到 com 插件。

我现在收到一个错误,即 application.comaddins[i].name 不是插件正常工作的有效成员。我在访问 comaddins 对象时需要帮助,以确保在 delphi 中激活了 com 插件。

提前致谢。

0 投票
0 回答
244 浏览

c# - 使用 C# 将文本插入 Word 文档后如何释放光标?

我正在创建一个MS Word VSTO addin( Custom Task Pane),通过单击按钮将一些文本插入到 Word 文档中。但是,我发现单击按钮并将文本插入文档后,光标不会自动返回到文档的正文。当我按下空格键时,它会再次触发按钮单击事件,而不是在 Document 中插入空格。

这是按钮单击的 c# 代码:

插入示例文本后,如何使光标回到文档中?

0 投票
1 回答
120 浏览

ms-office - 如何在 COM 加载项中获取 Office 文档的 IRM 加密状态?

我用 C++ (ATL) 编写了一个 Office COM 插件。现在我需要在加载项中知道当前文档是 IRM(信息权限管理)加密还是未受保护。或者,获取当前应用的 IRM 模板也可以。请注意,IRM 加密与设置文档密码不同。它实际上适用于 Office 2010,但我认为在较新的版本中它是相同的。如果您知道 .NET COM 插件的答案,那也可能会有所帮助。