如何访问Outlook中的"检查器"窗口功能区?

RWJ*_*RWJ 5 vsto outlook-addin outlook-2010

我是Outlook编程的新手,所以第一步(稍后更高级)是以下任务:

  • 创建一个新功能区(Ribbon1)选项卡(应显示在资源管理器和新检查器中)
  • 选择(探索)或打开(检查员)邮件时,功能区选项卡应显示邮件的主题(如上所述进行测试)

Explorer部分很容易上手但我在为新的检查员做上述操作时遇到了问题

我尝试了各种方法,但似乎没有工作:

  • 我已经尝试在NewInspector中引用Globals.Ribbons [inspector] .Ribbon1但是它总是为null

  • 我已经尝试在NewInspector中订阅Activate事件并从那里开始,但在那里Application.ActiveInspector()为null,如果我从NewInspector事件存储检查器的全局副本,它在第一个上不起作用新检查员(仅在第二次和之后阅读邮件.不是撰写邮件)

  • 我曾尝试使用Ribbon Load事件,但这只是第一次发生

  • 我曾尝试使用Globals.Ribbons.Ribbon1成员,但这只是第一次使用

(我发现了很多NewInspector的样本,但似乎没有人想修改除此之外的功能区/sf/ask/549641221/ to-an-an-an-object,为此没有答案)

这让我发疯了......难道真的没办法做这么简单的任务!?

示例代码供参考

    void InspectorsNewInspector(Outlook.Inspector inspector)
    {
        AddInspectorEventHandlers(inspector);
    }

    private void AddInspectorEventHandlers(Outlook.Inspector inspector)
    {
        if (inspector == null)
        {
            return;
        }

        Ribbon1 ribbon1 = Globals.Ribbons[inspector].Ribbon1; //This always return null!!!

        ((Outlook.InspectorEvents_10_Event)inspector).Activate += InspectorActivate;
        ((Outlook.InspectorEvents_10_Event)inspector).Close += InspectorClose;

        _openInspectors.Add(inspector);
    }
Run Code Online (Sandbox Code Playgroud)

hYk*_*hYk 0

在“NewInspector”事件期间,您的自定义功能区未加载。如果您调试代码,您将看到只有在“NewInspector”事件之后,它才会转到自定义功能区设计器。您可以做的是在自定义功能区加载事件期间实现您需要的内容。那是

private void MyRibbon_Load(object sender, RibbonUIEventArgs e){}
Run Code Online (Sandbox Code Playgroud)

在这里您可以获取当前活动的检查员。从中你可以获得你需要的物品。

前任 :

        Inspector inspector = Globals.WPTAddIn.Application.ActiveInspector();
        if (inspector != null)
        {
            if (inspector.CurrentItem != null)
            {
                if (inspector.CurrentItem is MeetingItem)
                {
                    MeetingItem meetingItem = (MeetingItem)inspector.CurrentItem;}}}
Run Code Online (Sandbox Code Playgroud)