c# - 使用 Lync ContactManager 获取所有联系人

标签 c# lync-2010 lync

现在我正在使用 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/

相关文章:

c# - 如果网站在服务器上并且 Lync 在本地用户环境中,我如何让 Lync 客户端工作?

c# - Fluent NHibernate 用 int Identity 插入表

powershell - 在 powershell 中将 try/catch block 与 Lync 2010 cmdlet 结合使用

lync-2010 - UCMA 3.0 示例学习项目

vba - 使用 VBA 的离线人员的 Lync 通知

botframework - 如何在lync sdk c#中获取客户的联系方式

c# - 如何创建///摘要

c# - 使用 IIS7 httpErrors 将异常传递给自定义错误页面

c# - 查找游戏对象的 child 的 child

rtp - 捕获 Lync 视频流