1

私はVSTOアドインを持っており、アドレスリスト内の人々のリストをフォームに表示しようとしています。グローバルアドレスリストで検索したいのですが、ワイルドカード文字のみに基づいて検索します。

このコードはアドレスリストのすべてのエントリをループしているのがわかりますが、10万を超えるエントリがあるので、ループを実行したくないので、検索で事前フィルターを実行する方法があるのではないかと思いました。

例として、名前が「ABC」で始まる名簿の人物を検索したいと思います。これは可能ですか?

4

2 に答える 2

1

VSTO を使用するのではなく、実際には EWS (Exchange の WCF のような Web サービス) を使用します。このようにして、ほとんどすべての環境でコードを呼び出すことができます。

http://vivekiyer.net/2010/07/17/querying-the-global-address-list-gal-via-exchange-web-services-ews/

于 2013-02-27T03:29:40.040 に答える
0

Outlook オブジェクト モデルでは、それを行うことはできません。拡張 MAPI レベル (C++ または Delphi のみ) では、GAL コンテナに対して PR_ANR 制限を作成できます。

RedemptionとそのRDOAddressList .ResolveNameEx メソッドを使用して、一致するすべてのエントリのリストを取得することもできます。

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set AdrrEntries = Session.AddressBook.GAL.ResolveNameEx("ABC")
  Debug.Print AdrrEntries.Count & " names were returned by ResolveNameEx:"
  for each AE in AdrrEntries
    Debug.Print AE.Name
  next
于 2013-02-21T14:46:40.337 に答える