c# - 有没有可靠的方法来获取 Outlook 日历的事件(如添加、更新和删除)?
问题描述
我目前正在使用 c# 开发一个 Outlook 插件项目,该项目应该监听 Outlook 日历的事件。但是我发现了一个问题,有时我的回调函数不起作用。有人可以帮助我吗?
我使用互操作库从我的日历中获取数据。
public partial class ThisAddIn{
public Outlook.Application app = null;
public Outlook.NameSpace ns = null;
public Outlook.MAPIFolder calendar = null;
public Outlook.Items appointments = null;
public Outlook.AppointmentItem deleteItem;
List<Outlook.Items> allItems = new List<Outlook.Items>();
List<Outlook.AppointmentItem> allItem = new List<Outlook.AppointmentItem>();
private void ThisAddIn_Startup(object sender, EventArgs e)
{
app = Application;
ns = app.GetNamespace("mapi");
ns.Logon("", "", true, true);
calendar = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar);
foreach (Outlook.Folder folder in calendar.Folders)
{
var oMailItems = folder.Items;
allItems.Add(oMailItems);
oMailItems.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(appointments_ItemAdd);
oMailItems.ItemChange += new Outlook.ItemsEvents_ItemChangeEventHandler(appointments_ItemChange);
oMailItems.ItemRemove += new Outlook.ItemsEvents_ItemRemoveEventHandler(appointments_ItemRemove);
foreach (Outlook.AppointmentItem item in oMailItems)
{
item.BeforeDelete += appointments_BeforeItemDelete;
allItem.Add(item);
}
}
appointments = calendar.Items;
allItems.Add(appointments);
appointments.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(appointments_ItemAdd);
appointments.ItemChange += new Outlook.ItemsEvents_ItemChangeEventHandler(appointments_ItemChange);
appointments.ItemRemove += new Outlook.ItemsEvents_ItemRemoveEventHandler(appointments_ItemRemove);
foreach (var item in appointments)
{
var appointment = (Outlook.AppointmentItem)item;
appointment.BeforeDelete+=appointments_BeforeItemDelete;
String subject = appointment.Subject;
allItem.Add(appointment);
Console.WriteLine(subject);
}
}
private void appointments_ItemAdd(object item)
{
((Outlook.AppointmentItem)item).BeforeDelete += appointments_BeforeItemDelete;
saveOperation(item,"A");
}
}
我希望每个事件都被监听,我的回调可以正确执行,但结果是事件有时无法被我的代码捕获,我什至无法总结出规律。Outlook 有时也会更改日历项的 entryId。
解决方案
推荐阅读
- javascript - 将 json 数据集合传递到 DataTable
- c# - 二维数组中的控制
- r - 如何根据两个自变量使用 R 来推断双分变量?
- git - 基本身份验证的 git push 身份验证问题
- python - 没有从 while 循环中获得适当的输出
- python - 构造函数的 DataFrame 错误未正确调用
- c++ - 我们可以有一个字符串树(在 C++ 中)吗?如果没有,最快的解决方案是什么?
- vb.net - 如何在标题单击 VB.NET 的 Datagridview 中对日期进行排序
- python - 字典中的 n-gram 模糊匹配
- java - 如何将 Azure Cosmos DB 中的拉模型与 Java 结合使用?