C# Outlook互操作提供了不同的结果
我正在使用Outlook Interop读取来自不同日历的一些事件,并将它们显示在大屏幕上。在我的机器上一切正常(Outlook 2010,Win7 x64),但在客户端的pc上(Outlook2003,Win XP),程序无法找到所有约会。如果我添加一些用于调试的复选框,该工具将在8到12个约会之间找到(应该找到12个约会),而不总是6个约会。我不知道出了什么问题,所以请帮帮我 代码如下:C# Outlook互操作提供了不同的结果,c#,interop,outlook,C#,Interop,Outlook,我正在使用Outlook Interop读取来自不同日历的一些事件,并将它们显示在大屏幕上。在我的机器上一切正常(Outlook 2010,Win7 x64),但在客户端的pc上(Outlook2003,Win XP),程序无法找到所有约会。如果我添加一些用于调试的复选框,该工具将在8到12个约会之间找到(应该找到12个约会),而不总是6个约会。我不知道出了什么问题,所以请帮帮我 代码如下: this.Appointments = new List<AppointmentItem>(
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);
});
this.appoinces=newlist();
foreach(此.SelectedCalendars中的MAPIFolder文件夹)
{
foreach(文件夹.Items中的对象应用程序)
{
如果(app是AppointmentItem&((AppointmentItem)app).Start.Date==DateTime.Now.Date)
{
此.appoints.Add(((AppointmentItem)app));
}
}
}
这个。约会。排序(
代表(任命项目App1、任命项目App2)
{
返回App1.Start.CompareTo(App2.Start);
});
更新
我有一些新消息。我得到了这个例外。你知道怎么处理吗
(我把德语翻译成英语;希望你能理解;)
无法创建类型为“System.\u ComObject”的COM对象
已更改为Interfacetype
“Microsoft.Office.Interop.AppointmentItem。
无法运行此过程,因为对
用于与IID接口的COM组件
“{00063033-0000-0000-C000-0000000000 46}”
由于以下错误,无法运行:
不支持接口(异常_HRESULT:0x80004002(E_NOINTERFACE))
它可能是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");
var items=folder.items.Restrict(“[Start]<'01/31/2009 00:00 AM'和[Start]>='01/30/2009 00:00 AM”);
请确保您已绑定到2003版的Office Interop,该版本应是向前兼容的。Hm,sry,但这无法解决问题。我开始认为Outlook/Exchange可能有问题…folder.Items.Count在2003年和2010年是否给出了相同的数字?每次更新的数字都不同。同样的Interop也是如此。所以很难做出比较这是一个疯狂的想法。可能是日期过滤器失败了吗?((任命项目)应用程序).Start.Date==DateTime.Now.Date可能检索到一个没有时区信息的约会,因此比较失败?如果检索到一个月内的所有约会,那么您是否得到了正确的数字?已经检查过了。只是为了好玩,我还尝试了v14,得到了相同的结果(仅供参考)