0

私はアドインのことで本当に新しいです。私のコードはこれらを行う必要があります: Outlook ユーザーは何かを保存/作成します。作成されたアイテムが予定アイテムである場合、私のシステムはアイテムの件名をファイル名として取り、c: ディレクトリの下に保存する必要があります。これが私のコードです。何が問題なのですか?

注: 新しい予定を作成すると、if 句が機能し、そこに他のコードを記述しても機能しますが、.ai などの AI の情報を取得できませんai.Subject

namespace SendToMRBS
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
           this.Application.ItemLoad += new Outlook.ApplicationEvents_11_ItemLoadEventHandler(Application_ItemLoad);
    }

    void Application_ItemLoad(object Item)
    {
        if (Item is Outlook.AppointmentItem)
        {
            Outlook.AppointmentItem ai = Item as Outlook.AppointmentItem;
            ai.SaveAs("C:\\" + ai.Subject, Microsoft.Office.Interop.Outlook.OlSaveAsType.olICal);
        }
    }


    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
    }

    #region VSTO generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InternalStartup()
    {
        this.Startup += new System.EventHandler(ThisAddIn_Startup);
        this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
    }

    #endregion

}

}

4

1 に答える 1

1

私は解決策を見つけました.. Item オブジェクトにはプロパティなどがないため、NewInspector イベントを使用する必要がありました。これが私の新しいコードです:

public partial class ThisAddIn
{

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        this.Application.ItemLoad += new Outlook.ApplicationEvents_11_ItemLoadEventHandler(Application_ItemLoad);

    }

    void Application_ItemLoad(object Item)
    {
        if (Item is Outlook.AppointmentItem)
        {
            this.Application.Inspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
        }
    }

    void Inspectors_NewInspector(Outlook.Inspector Inspector)
    {
        Outlook.AppointmentItem ai = Inspector.CurrentItem;
        ai.Write += new Outlook.ItemEvents_10_WriteEventHandler(ai_Write);
    }

    void ai_Write(ref bool Cancel)
    {
        Outlook.Inspector ins = this.Application.ActiveInspector();
        Outlook.AppointmentItem appi = ins.CurrentItem;

        appi.SaveAs("c:\\test.ics", Microsoft.Office.Interop.Outlook.OlSaveAsType.olICal);
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
    }

    #region VSTO generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InternalStartup()
    {
        this.Startup += new System.EventHandler(ThisAddIn_Startup);
        this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
    }

    #endregion

}
于 2012-05-08T10:48:22.943 に答える