4

我编写了一个简单的 VSTO 插件,当用户单击功能区栏按钮时,它会在电子邮件中插入超链接。这是一个代码示例:

    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
        var context = e.Control.Context as Inspector;

        if (context != null)
        {
            if (context.IsWordMail())
            {
                var doc = context.WordEditor as Document;
                if (doc != null)
                {
                    var sel = doc.Windows[1].Selection;
                    doc.Hyperlinks.Add(sel.Range, "http://www.google.com", "", "", "Google", "");
                }
            }
        }
        else if (e.Control.Context is Explorer)
        {
            Explorer explorer = Globals.ThisAddIn.Application.ActiveExplorer();

            if (explorer.Selection.Count == 1)
            {
                Microsoft.Office.Interop.Outlook.Selection itemSelection = explorer.Selection;
                var item = itemSelection[1] as MailItem;

                // get the instance of WordEditor in a reading pane?

            }
        }
    }

e.Control.Context is Inspector当在单独的窗口 ( )中编辑电子邮件时,这很有效。

如果正在回复/转发消息并且阅读窗格已打开,则编辑器将内嵌显示在阅读窗格中 ( e.Control.Context is Explorer)。

Document在这种情况下,我不知道如何获取实例。我可以访问在资源管理器中选择的项目,但我不知道如何访问正在阅读窗格中显示的文档编辑器。

如果我将编辑器“弹出”到一个单独的窗口,它工作正常(上下文更改为 Inspector)。

有没有办法访问直接在阅读窗格中编辑的电子邮件文档?


Dmitry的大力帮助下,他为我指明了正确的方向,我发现 Explorer 类中有一个属性:Explorer.ActiveInlineResponseWordEditor它为您提供了内联显示的编辑器。

4

1 回答 1

0
  1. 您可以调用 MailItem.GetInspector,然后调用 Inspector.WordEditor。这在较新版本的 Outlook 中应该可以正常工作。

  2. 您可以在Redemption中使用SafeExplorer对象- 它应该适用于所有版本的 Outlook,并且它公开了 SafeExplorer.ReadingPane 属性( ReadingPane对象)。

于 2013-06-02T17:04:28.130 回答