4

これは私が取り組んでいるより大きなプロジェクトの一部ですが、今のところ、ユーザーが受信トレイのメール アイテムとその内容 (電子メールの実際の本文) が隣接するパネルに表示されます。

プロシージャ内にコードを記述してみましItemLoad event handlerたが、MSDN Web サイトでさえ、引数として渡された Item オブジェクトのプロパティは初期化されていないため、(Item as MailItem).SenderEmailAddress を呼び出しても機能しません。

誰かがこれを行う方法を教えてもらえますか? (Outlook 2007 を使用しています)

ちなみに、以下は機能しません。

public void OnConnection(object application, 
                         Extensibility.ext_ConnectMode connectMode, 
                         object addInInst, 
                         ref System.Array custom)
{
    //this code runs
    applicationObject = (Outlook.Application)application;
    this.applicationObject.Startup += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_StartupEventHandler(applicationObject_Startup);
}

void applicationObject_Startup()
{
        //this code runs
        this.applicationObject.Explorers.NewExplorer += new Microsoft.Office.Interop.Outlook.ExplorersEvents_NewExplorerEventHandler(Explorers_NewExplorer);
}

void Explorers_NewExplorer(Microsoft.Office.Interop.Outlook.Explorer Explorer)
{
    //This code does not run
    Explorer.SelectionChange += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_SelectionChangeEventHandler(Explorer_SelectionChange);
}

void Explorer_SelectionChange()
{
    //This code does not run
    //do something
}
4

2 に答える 2

0

私はしばらくこれをしていませんが、メインウィンドウを表すオブジェクトでSelectionChangeイベントを使用する必要があると思います。Explorer

Application.Startupイベントハンドラーでは、Explorersプロパティを取得し、NewExplorerイベントのハンドラーを追加する必要があります。このハンドラーは、ユーザーが新しいウィンドウを開くたびに起動します。

そこから、新しいオブジェクトのSelectionChangeイベントをフックでき、そのイベントのハンドラーで、プロパティを介して選択したアイテムを取得できます。これで、選択した各アイテムの送信者のメールアドレスを取得できるようになります。ExplorerSelection

于 2012-11-20T18:40:14.223 に答える
0

私はそれを行う方法を見つけました:

    public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
    {
        applicationObject = (Outlook.Application)application;
        this.applicationObject.ActiveExplorer().SelectionChange += new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_SelectionChangeEventHandler(Explorer_SelectionChange);
    }
    void Explorer_SelectionChange()
    {
        if (applicationObject.ActiveExplorer().Selection.Count == 1)
        {
            Outlook.MailItem item = applicationObject.ActiveExplorer().Selection[1] as Outlook.MailItem;

            if (item != null)
            {
               string address = item.SenderEmailAddress;
               //do something
            }
        }
    }
于 2012-11-22T19:04:58.677 に答える