从“发送到”Windows 上下文菜单中调用 Outlook 插件时未正确初始化

问题描述

我使用 Outlook 2016 插件(Windows 10 上的 C# Visual Studio 2017)。 当创建新消息然后从 Outlook 主菜单(或工具栏)启动的“编写新消息”窗口发送新消息时,加载项完美地完成其工作:加载项显示自己的功能区,并带有一些单选按钮来配置要发送的消息,仅此而已。

但是当从文件上的 Windows 上下文菜单“发送到”创建新消息窗口(作为附件发送)时,加载项将被忽略:单选按钮,即使它们触发了各自的回调等配置底层模型,让新消息不变:-(

在调试器下观察到的主要区别是:

  • 从 Outlook 菜单:“ThisAddIn”类似乎检索新消息窗口的包装器,因此在发送消息时会考虑配置:-)
  • 来自 Windows 上下文菜单:仅触发“GetCustomUI”回调,因此单击“发送”按钮时,消息将保持不变:-(

感谢任何帮助(示例、文档、操作方法、...)...

JF

解决方法

当用户尝试使用上下文菜单 Send To 发送文件时,并非所有事件处理程序都会被触发。

如果 GetCustomUI 在用户从文件夹发送文件时触发(使用上下文菜单),您可以添加带有单选按钮的自定义功能区 UI,以配置要发送的消息。我想这就是您的加载项所做的全部。

您只需要使用 Ribbon XML 创建自定义 UI 并使用 GetCustomUI 函数将其返回。在 Walkthrough: Create a custom tab by using Ribbon XML 文章中阅读更多相关信息。

在功能区事件处理程序中,您需要确保可以通过作为参数传递的 Context 访问项目。例如,onAction 回调具有以下签名:

C#: void OnAction(IRibbonControl control)
VBA: Sub OnAction(control As IRibbonControl)
C++: HRESULT OnAction([in] IRibbonControl *pControl)
Visual Basic: Sub OnAction(control As IRibbonControl)

IRibbonControl 接口实例提供 Context 属性,该属性表示包含触发回调过程的 Ribbon 用户界面的活动窗口。因此,您可以将其转换为 InspectorExplorer 以检索您必须处理的实际邮件项目。