C#VSTO Outlook 2007:如何通过EntryID显示联系人

DjC*_*ino 5 c# outlook vsto add-in contact

如何使用EntryID的C#VSTO Outlook 2007插件打开联系人.

现在我正在联系联系人文件夹中的所有联系人:

string entryid = ...

Outlook.Application outlookApp = new Outlook.Application();
Outlook.MAPIFolder fldContacts = outlookApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts) as Outlook.MAPIFolder;
foreach (Outlook._ContactItem contact in fldContacts.Items)
{
    if (contact.EntryID==entryid) {
         contact.Display(false);
         break;
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不是联系人文件夹中许多联系人的有效代码

Jos*_*osh 3

您想要使用NameSpace 对象的GetItemFromID方法(不直观的是,可以像上面那样通过 Application.Session 属性访问该方法。)

您将需要要从中检索项目的 MAPI 商店的商店 ID。这可以最容易地从您已经引用的文件夹对象中检索。

string entryid = ...

var outlookApp = new Outlook.Application();
var outlookNS = outlookApp.Session;
var fldContacts = outlookNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
var contact = outlookNS.GetItemFromID(entryid, fldContacts.StoreID);
Run Code Online (Sandbox Code Playgroud)