2

Outlookアドインを開発しています。その一部は、特定のフォルダーで予定を整理することです。要素が削除された場合にキャプチャしたい(この場合、「my」フォルダから移動すると削除されたと見なされます)。

記事https://stackoverflow.com/questions/10579240/how-to-capture-ac-sharp-outlook-addin-appointment-delete-eventと彼/彼女の解決策が大いに役立ったことがわかりましたが、私には大きな問題があります:イベントは、Outlookからフォルダオブジェクトを取得したときではなく、フォルダが作成されたその「セッション」でのみ発生します。

私のコードは次のようになります。

private Outlook.MAPIFolder _CalendarMAPIFolder = null;
private Outlook.MAPIFolderEvents_12_Event _CalendarFolder = null;
private Outlook.Items _CalendarItems = null;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    Outlook.MAPIFolder calendarFolder =
        this.Application.GetNamespace("mapi").GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);

    // get my-Folder (if not found, create it)
    try
    {
        _CalendarMAPIFolder = calendarFolder.Folders["my-Folder"];
    }
    catch
    {
        _CalendarMAPIFolder = calendarFolder.Folders.Add("my-Folder");
    }
    _CalendarItems = _CalendarMAPIFolder.Items;
    _CalendarFolder = _CalendarMAPIFolder as Outlook.MAPIFolderEvents_12_Event;
    if (_CalendarFolder == null)
    {
        MessageBox.Show("can not cast MAPIFolder to Folder");
    }


    _CalendarFolder.BeforeItemMove += new Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(Folder_BeforeItemMove);
    Debug.Print("events registered");
}
public void Folder_BeforeItemMove(
        Object Item,
        Outlook.MAPIFolder MoveTo,
        ref bool Cancel)
{
    Outlook.AppointmentItem aitem = Item as Outlook.AppointmentItem;
    string s = "";
    if (aitem != null) s = aitem.Subject;
    //Cancel = false;
    MessageBox.Show("Test! " + s);
}

誰かが解決策を持っていますか?

ありがとうございました ;)

編集:私はまだ手がかりがありません:(((((((

4

2 に答える 2

0

定義上、BeforeItemMoveユーザー(Outlookクライアント)が移動を開始したときにのみ起動しItemます。同期イベント(つまり、Exchange sync )に対しては起動しません。

OutlookをExchangeServerに接続している場合、クライアントアプリケーション(セッションなど)の外部でフォルダー変更イベントの通知を受け取りたい場合は、EWS(Exchange Webサービス)を確認する必要があります。EWSは、プッシュ、プル、またはストリーミング通知オプションを提供します。「アイテム削除」操作に通知を添付します。

于 2012-07-31T18:59:06.783 に答える
0

それはすべてマイクロソフトのせいでした!これはバグでした。Outlookを更新する必要がありました。

于 2012-08-22T07:43:42.767 に答える