现在我正在使用 LyncClient.ContactManager.BeginSearch 方法来查找联系人。但是,我一直无法弄清楚如何获得所有联系人。我试过将“*”和“%”作为通配符传递,但没有奏效。现在这是我的函数调用。
_lyncClient.ContactManager.BeginSearch("*", SearchProviders.GlobalAddressList, SearchFields.DisplayName, SearchOptions.ContactsOnly, 400, SearchCallback, "Searching Contacts");
最佳答案
Lync 联系人按组组织,因此您需要从组级别开始。一旦你有了一个组,你就可以通过它的联系人来枚举
foreach(var group in _client.ContactManager.Groups)
{
foreach (var contact in group)
{
MessageBox.Show(contact.Uri);
}
}
This article有利于背景,和更高级的功能
编辑:具体来说,对于通讯组扩展问题,我认为样本 here有缺陷。
不是调用 BeginExpand 并等待 WaitHandle,而是提供一个回调方法来处理 Expand 回调。所以,而不是:
asyncOpResult = DGGroup.BeginExpand(null, null);
asyncOpResult.AsyncWaitHandle.WaitOne();
DGGroup.EndExpand(asyncOpResult);
试试这个:
...
asyncOpResult = DGGroup.BeginExpand(ExpandCallback, DGGroup);
...
public void ExpandCallback(IAsyncResult ar)
{
DistributionGroup DGGroup = (DistributionGroup)ar.AsyncState;
DGGroup.EndExpand(ar);
etc...
}
这非常适合我。
关于c# - 使用 Lync ContactManager 获取所有联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5460070/