DOBON.NET DOBON.NETプログラミング掲示板過去ログ

C++(MFC)でoutlook Addin アドレス取得

環境/言語:[vs2008 C++ MFC  ]
分類:[その他]

IDTExtensbility2のCOMベースのOUTLOOK2010用のアドインを
  vs2008 C++ MFC  作成していまして
 新規宛名のダイアログより送信ボタン押下時に
 入力されたアドレスを取得する部分でアプリケーションエラーが出て
 悩んでいます。
 
  以下ソースです。
   このソースは送信時のイベント内のコードです。
   最後のget_AddressEntryで不正終了します。
   res2の参照が足りないせいだとおもうのですが
   どのように設定するかわかりません。
   申し訳けございませんがご教授ください。
  
  
***************************************************
Outlook::_Application* app = NULL;
Outlook::Recipients* res = NULL;//
Outlook::Recipient* res2 = NULL;//
Outlook::AddressLists* addrLists = NULL;

CComPtr<Outlook::AddressEntry> addent = NULL;
CComQIPtr<Outlook::_MailItem> spItem(Item);
CComPtr<Outlook::_NameSpace> ns;

IUnknown* pUnk= NULL;

spItem->get_Application(&app);
spItem->get_Recipients(&res);
ns->get_MAPIOBJECT(&pUnk);

//件数の取得
res->get_Count(&count); //これは取得できる

//アドレスの取得
res2->get_AddressEntry(&addent);//ここでアプリケーションエラーで落ちる
***************************************************
■No28664に返信(みさんの記事)
> Outlook::Recipient* res2 = NULL;//
(略)
> //アドレスの取得
> res2->get_AddressEntry(&addent);//ここでアプリケーションエラーで落ちる

NULL を入れた後、res2 は NULL のまま変化していないのに、それに対してメソッドを呼び出そうとすれば落ちて当然かと思いますが…。
次の一手としては、Recepients という複数形(おそらくはコレクション)から、1 個(Recepient)を取り出すところでしょうね。
そういった情報を探してみてください。

DOBON.NET | プログラミング道 | プログラミング掲示板