问题标签 [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.
.net - 如何正确实现 Office COM 加载项的 IDTExtensibility2 接口?
我正在为 Outlook 实施 COM 加载项。我使用 IDTExtensibility2。我不确定这是否是执行 COM 加载项的最佳方式,但我无法改变这一点。
该接口定义了五个方法:OnConnection、OnStartupComplete、OnAddInsUpdate、OnBeginShutdown、OnDisconnection。
我需要执行以下操作:
- 从文件加载配置数据
- 加载注册表数据
- 开始新会话
- 创建 *.pst 文件
- 订阅资源管理器事件
- 连接到 Internet 服务器以获取一些数据
- 在主菜单中创建菜单项
- 创建工具栏
- 在 Outllok 中添加/删除一些东西(在 *.pst 文件级别)
请指教,我应该什么时候做?
- 我需要在 OnConnection 方法中执行什么操作?
- 只有在 OnStartupComplete 调用时才允许什么?
- 在 OnBeginShutdown / OnDisconnection 期间我需要释放哪些资源?
excel - Excel OLE - 当 Excel 嵌入应用程序时,.NET COM 插件的行为不同
我有一个 .NET (C#) 插件,它使用 COM Shim dll 将自身加载到 Excel 中。当 Excel 正常运行时,插件工作正常,没有任何问题。该插件在 Excel 中显示其自己的自定义工具栏,用于执行不同的命令。
当我将 Excel 嵌入到另一个应用程序(例如 DSOFramer 等)中时,插件开始表现得很奇怪。似乎如果我禁用其工具栏上的按钮,则在设置 Visible 属性后它不会再次启用。此外,我收到一堆“未设置对象引用”错误,因为 Application::Selection 对象为 NULL,这在 Excel 正常运行时永远不会发生。有时,当调用 Application::GetAddIns() 方法时,我也会遇到权限错误。
我不确定这里发生了什么,也找不到解释 Excel 嵌入到其他应用程序中时 Excel COM 插件行为的文章。
vb.net - 将 Visio 宏导出到 Visio COM 加载项
我在 VB 中编写了一些 Makros 和函数,所有代码在我的文档后面都可以正常工作。为了保存我的代码并使其可供其他用户使用,我想为 VIsio 创建一个 COM 插件。所以我买了 Visual Studio 2008,我想把我的代码导入它。
是否可以将我导出的 .cls 文件包含到我的 Visual Studio COM-Add-on Projekt 中?
outlook-addin - 从 Outlook COM 加载项手动触发 Windows 错误报告
我正在使用 Visual Studio 2008 和 VSTO 编写 Outlook COM 插件。如果加载项中未处理异常,我希望它触发 Windows 错误报告 (WER)。我们公司可以访问 WinQual,以便我们可以从我们程序中出现的用户那里获得 WER 报告的报告。有没有办法做到这一点?
据我所知,这是不可能的,但想检查一下是否有办法。WER 仅在应用程序生成未处理的异常时触发。在 Outlook 和 Outlook 中运行的 Outlook 加载项具有围绕对 COM 加载项的调用的异常处理程序,以防止 COM 加载项导致 Outlook 崩溃。由于 Outlook 不会崩溃,因此不会触发 WER。
excel - 嵌入 Excel 图表对象时,Powerpoint 显示“无法启动应用程序”错误
当 Excel 工作表或图表嵌入 Word 或 Powerpoint 时,这是一个非常常见的问题。我在 Word 和 Powerpoint 中都看到了这个问题,原因似乎是附加到 Excel 的 COM 插件。COM 插件是用 C# (.NET) 编写的。有关错误对话框,请参阅随附的图像。
我调试了插件,发现了一个非常奇怪的行为。COM 插件中的 OnConnection(...)、OnDisConnection(...) 等方法可以正常工作,直到我将事件处理程序添加到代码中。即处理 Excel 中可用的 Worksheet_SheetChange、SelectionChange 或任何类似事件。只要我添加了一个事件处理程序(尽管我的代码有几个),Word 和 Powerpoint 就会开始抱怨并且不激活嵌入的对象。
在互联网上的一些帖子中,人们被要求删除办公室的防病毒插件(在我的情况下没有),所以这让我相信这个问题与主机应用程序激活时加载的 COM 插件有关物体。
2010 年 6 月 21 日更新
发现在激活嵌入对象时,事件和对 ComAddIns 集合的更改都会产生问题。我现在使用 Excel::Application::UserControl 属性来检查 Excel 是否处于嵌入状态,然后跳过任何 OnConnection(...) 和 OnDisconnection(...) 代码。
事件问题的一种解决方案是将所有应用程序级事件移动到 VBA 代码并调用到 .NET。从而从 .NET 代码中删除所有事件处理程序。
可能还有更多嵌入对象无法初始化的情况,因此我选择禁用 COM 插件,即完全跳过 OnConnection(...) 和 OnDisconnection(...) 方法中的代码。
excel - 嵌入式 Office 应用程序 - 如何知道应用程序是否正在运行或对象是否已嵌入
我在 Word 中添加了一个 Excel 工作表对象。Excel 附加了一个 COM 插件。知道如何知道 Excel 是独立运行还是作为嵌入式对象运行?
当嵌入的 Excel 对象在 Word 中被激活(双击)时,附加到 Excel 的 COM 插件会加载。我在 OnConnection(...) 或其他可以告诉 Excel 对象状态的方法中寻找某种属性或参数。
c# - Excel 插件 - 注销时未调用 OnDisconnection/OnBeginShutdown
我在 Visual Studio 2008 中使用 Extensibility IDTExtensibility2 接口为 Excel 开发了一个共享插件。
它的功能非常基本。打开工作簿时,它存储在打开的工作簿列表中,当它关闭时,插件将创建一个新的文本文件,然后将一些 XML 写入文件,然后由另一个进程读取该文件,然后反序列化 XML .
该插件在正常操作下工作 - 因此,如果用户打开和关闭一个文件,那么插件会做它应该做的事情,如果他们在打开工作簿的情况下退出 Excel,那么它会做它应该做的事情。
问题是当用户打开 Excel 并打开工作簿并注销时。这两种方法: OnDisconnection 和 OnBeginShutdown 似乎根本没有被调用。
我做了两件事来测试这个:
我创建了一个 TextWriterTraceListener,它在调用这两个方法时写入了一个日志文件。当 Excel 正常退出时,它们会被命中并且信息会记录在日志文件中,但是当用户注销时,日志文件中没有任何内容。
在这两种使用 File.CreateText(filename) 的方法中,我创建了一个空白文件。当用户正常退出 Excel 时,会创建这些文件,但同样,当通过注销关闭 Excel 时,不会创建这些文件。
有谁知道如何解决这个问题?当用户注销他们的机器时,我需要捕获 Excel 何时关闭...
c# - COM 加载项不会在 word 2007 中消失
我有两个不同的 COM 加载项,一个用于 Word 2003,一个用于 Word 2007。
Word 2003 每次都像魅力一样工作,没有问题等……但是现在,当我打开 Word 2007 时,Word 2003 中的按钮出现在我的 Word 2007 功能区中。即使在我禁用我的加载项或清理我的项目之后,这种情况仍然会发生...我已经尝试了所有方法,包括删除我的 Word 2003 加载项的所有 .dll,但问题仍然存在...
关于问题是什么的任何建议?
干杯
excel-interop - excel interop - 如何运行 excel com 加载项代码
我有一个我创建的 excel 加载项。我想要做的是在 c# (ASP.NET) 中打开一个 excel 文档并在加载项中运行一些代码,然后将 excel 文档作为 html 页面返回。
这可以做到吗?
c# - 从 C# MS Access COMAddIn 在 MS Access 表单上引发事件/调用方法
我有一个 VS 2008 C# MS Access 插件,我想知道如何在 MS Access 表单上引发事件或调用方法。简而言之,我如何从 C# 中引发事件或调用 Microsoft.Office.Interop.Access.Form 对象上的方法并获取 VBA 代码以在 MS Access 端执行。请任何人,让我知道这样的事情是否可能以及如何。