2010-11-18 20 views
4

ユーザーがアクセスできる受信トレイの内容を表示できるようにするアプリケーションを開発しています。私はその後、グローバルアドレス一覧/ブック検索

AddressEntries entries = global.AddressEntries; 
AddressEntry entry = entries["search value"]; 

これは動作しますが、インスタンスを1つだけ返し、それが最初に見つかったものです他のグローバルアドレス一覧を検索する手段を見つけようとして困難な時期を持っています。私は基本的に、複数の結果がある場合、ユーザーにリストを提供したい。

第二に、私は連絡先の詳細を表示できるようにしたいが、私はそれは常にnullを返します

ContactItem contact = entry.GetContact(); 

を使用する場合、私はそれが現在のユーザーの連絡先の個人的なリストを見ているので、それがあると思います

私は、Outlookでグローバルアドレス帳ウィンドウの簡単なバージョンを作成しようとしていると思います。

とにかく誰でもアイデアや参考資料があれば、私は感謝しています!

おかげ パトリック

答えて

3

あなたは以下に示すように、現在のプロファイルからグローバルアドレス一覧を取得することができるはずです。

Outlook.AddressLists addrLists = Application.Session.AddressLists; 
Outlook.AddressList gal = addrLists["Global Address List"]; 

次に、AddressListのメンバーを列挙して表示することができます。

これを行う別の方法はon MSDN hereと記載されています。

方法: グローバルアドレス一覧のエントリを列挙

+0

こんにちは、先端に感謝。私はうまく動作するようになった。私はほとんど10kのエントリを通過し、エラーがスローされ、それが何であるかはわかりません。 GALを照会して(約90kの)リスト全体を列挙するより良い方法があるはずです。 – Patrick

+0

@Patrick - 何らかのカーソルまたはブックマークAPIがチャンク内での処理を可能にするのに便利です - Outlookの仕組みがわからないこれはすばやく行います。あなたが指摘したように、確かにこの方法ではありません。 –

4
string[] names; 
Outlook.AddressLists addrLists = Application.Session.AddressLists; 
Outlook.AddressList gal = addrLists["Global Address List"]; 

//for a distrubution list do this... 
Outlook.AddressEntry entry = gal.AddressEntries["distribution list"]; 
Outlook.ExchangeDistributionList exchDL = entry.GetExchangeDistributionList(); 
Outlook.AddressEntries addrEntries = exchDL.GetExchangeDistributionListMembers(); 

names = new string[addrEntries.Count]; 

for (int i = 0; i < addrEntries.Count; i++) 
{ 
    Outlook.AddressEntry exchDLMember = addrEntries[i]; 
    names[i] = exchDLMember.Name; 
} 

return names; 

//for an individual you could do something like this... 
Outlook.AddressEntry entry = gal.AddressEntries["contact nickname"]; 

Outlook.ContactItem contact = entry.GetContact(); 
string name = contact.NickName; 
string email = contact.Email1Address;