访问Outlook阅读窗格中正在编辑的文档
本文关键字:编辑 文档 Outlook 访问 | 更新日期: 2023-09-27 18:16:32
我编写了一个简单的VSTO插件,当用户单击ribbon栏按钮时,它会在电子邮件中插入一个超链接。下面是一个代码示例:
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.ActiveInlineResponseWordEditor
,它使您的编辑器内联显示。
-
可以先呼叫
MailItem.GetInspector
,再呼叫Inspector.WordEditor
。这在较新版本的Outlook中应该可以正常工作。Outlook 2016还公开了Explorer.ActiveInlineResponseWordEditor
属性。 -
你可以在Redemption中使用SafeExplorer对象(我是它的作者)-它应该在所有版本的Outlook中工作,并且它暴露了
SafeExplorer.ReadingPane
属性(ReadingPane对象)。