【问题标题】:Outlook Interop delivers different resultsOutlook Interop 提供不同的结果
【发布时间】:2010-07-12 11:45:20
【问题描述】:

我正在使用 Outlook-Interop 从不同的日历中读取一些事件并将它们显示在大屏幕上。在我的机器上一切正常(Outlook 2010,Win7 x64),但在客户的电脑(Outlook2003,Win XP)上,程序找不到所有约会。如果我添加一些用于调试的复选框,该工具会发现 8 到 12 个约会(它应该找到 12 个)而不总是 6 个。我不知道出了什么问题,所以请帮帮我。

代码如下:

this.Appointments = new List<AppointmentItem>();

foreach (MAPIFolder folder in this.SelectedCalendars)
{
    foreach (object app in folder.Items)
    {
        if (app is AppointmentItem && ((AppointmentItem)app).Start.Date == DateTime.Now.Date)
        {
            this.Appointments.Add(((AppointmentItem)app));
        }
    }
}

this.Appointments.Sort(
    delegate(AppointmentItem App1, AppointmentItem App2)
    {
        return App1.Start.CompareTo(App2.Start);
    });

更新

我有一些新信息。得到这个异常。知道如何处理吗?

(我从德语翻译成英语;希望你能理解;))

“System.__ComObject”类型的 COM 对象不能是 更改为接口类型 “Microsoft.Office.Interop.AppointmentItem。 此过程无法运行,因为 Queryinterface-Call 到 用于 IID 接口的 COM 组件 “{00063033-0000-0000-C000-000000000046}” 由于以下错误,无法运行: 不支持接口(异常 _HRESULT:0x80004002 (E_NOINTERFACE))。

【问题讨论】:

    标签: c# interop outlook


    【解决方案1】:

    可能是 COM 对象的迭代器失败。

    如果您重新编写循环以显式调用 GetFirst()GetNext() 是否有效:

    object app = folder.Items.GetFirst();
    while (app != null)
    {
        if (app is AppointmentItem && ((AppointmentItem)app).Start.Date == DateTime.Now.Date)
        {
            this.Appointments.Add(((AppointmentItem)app));
        }
        app = folder.Items.GetNext();
    }
    

    您也可以尝试在开始日期过滤 Items 集合。

    var items = folder.Items.Restrict("[Start] < '01/31/2009 00:00 AM' and [Start] >= '01/30/2009 00:00 AM");
    

    【讨论】:

    • 嗯,抱歉,但这无法解决问题。我开始认为这可能是 Outlook/Exchange 的问题...
    • folder.Items.Count 在 2003 年和 2010 年给出相同的数字吗?
    • 每次更新都不同。还具有相同的互操作性。所以很难进行比较
    • 一个疯狂的想法。可能是日期过滤器失败了吗? ((AppointmentItem)app).Start.Date == DateTime.Now.Date 可能是在没有时区信息的情况下检索到的,所以比较失败?如果您检索一个月的所有约会,那么您得到正确的数字吗?
    【解决方案2】:

    确保您已绑定到应该向前兼容的 2003 版 Office Interops。

    【讨论】:

    • 已检查。只是为了好玩,我也尝试了 v14 并得到了相同的结果(仅供参考)
    猜你喜欢
    • 2020-10-01
    • 2020-08-20
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    相关资源
    最近更新 更多