我想;
我正在使用VB.net使用Visual Studio 2017开发MS Outlook加载项。 (c#代码示例是不错的选择)。我需要此加载项,才能通过“ RICHEDIT60W”的“查找某人”字段来搜索MS Skype for Business之类的联系人。
到目前为止,我已经尝试了以下方法;
Session.GetGlobalAddressList
获取“全局地址列表”
System.DirectorySearcher
DirectoryEntry
的对象; name.surname.corporation.com
,其中我的电子邮件地址是name.surname@corporation.com,这次我收到“ 未指定错误” root = GetObject("LDAP://rootDSE"
)上给我一个错误问题:如何执行以下任何操作;
DirectorySearcher
上班?
答案 0 :(得分:0)
在较低的级别(仅扩展的MAPI-C ++或Delphi)上,您将需要应用PR_ANR
MAPI限制:这是Outlook在解析名称并显示模糊匹配列表时使用的限制。您可以在单独的线程上运行该代码,但一次不会返回匹配项-您将获得整个集合。
如果不能选择扩展MAPI,则可以使用Redemption及其RDOSession.AddressBook
。GAL.ResolveNamesEx方法:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set AdrrEntries = Session.AddressBook.GAL.ResolveNameEx("John")
Debug.Print AdrrEntries.Count & " names were returned by ResolveNameEx:"
Debug.Print "------------"
for each AE in AdrrEntries
Debug.Print AE.Name
next
Debug.Print "------------"
答案 1 :(得分:0)
我这样解决了;
AddressEntries
足够快,在那里没有问题AddressEntries
一次,并且仅将每个Name
属性的<{1}}传递给List(Of String)
,这大约需要3秒IndexOf
函数查询列表,该函数最多花费150ms的时间来获取所有匹配项,并且列表中的项目可立即访问这符合我的需求,因为 -它可以通过我的家庭网络,甚至在我没有连接的情况下也可以工作(我假设Outlook正在缓存GAL) -使用Linq进行查询的速度足够快,可以方便地根据用户类型进行搜索