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。エクスプローラーで選択したアイテムにアクセスできますが、閲覧ウィンドウに表示されているドキュメント エディターにアクセスする方法がわかりません。

エディターを別のウィンドウに「ポップアウト」すると、正常に動作します (コンテキストがインスペクターに変わります)。

閲覧ウィンドウ内で直接編集された電子メール ドキュメントにアクセスする方法はありますか?


私を正しい方向に向けてくれた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 に答える