ユーザーがリボン バーのボタンをクリックしたときに電子メールにハイパーリンクを挿入する単純な 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
。エクスプローラーで選択したアイテムにアクセスできますが、閲覧ウィンドウに表示されているドキュメント エディターにアクセスする方法がわかりません。
エディターを別のウィンドウに「ポップアウト」すると、正常に動作します (コンテキストがインスペクターに変わります)。
閲覧ウィンドウ内で直接編集された電子メール ドキュメントにアクセスする方法はありますか?
私を正しい方向に向けてくれたDmitryの助けを借りて、Explorer クラスにプロパティがあることがわかりました。Explorer.ActiveInlineResponseWordEditor
これにより、エディターがインラインで表示されます。