PropertyAccessor オブジェクト


Outlook 2007 の新機能の中で特に画期的なものとして、PropertyAccessor オブジェクトがあります。これは、Outlook オブジェクト モデル (以下、OOM) で MAPI のプロパティに直接アクセスできるようにするためのオブジェクトです。

以前のバージョンでも UserProperty オブジェクトや ItemProperty オブジェクトで MAPI のプロパティにアクセスできていました。しかし、UserProperty でアクセスできるのはユーザー定義のプロパティのみ、ItemProperty でアクセスできるのは OOM でアイテムなどのプロパティとして定義されているものに限られ、一部の通常使われないプロパティにはアクセスできませんでした。
たとえば、インターネット メールのヘッダ情報などは、OOM でアイテムのプロパティとしては定義されていませんし、ユーザー定義のプロパティでもありません。そのため、そのようなプロパティにアクセスしたければ、CDO 1.2 を使用するわけですが、OOM と CDO のオブジェクト モデルは似ているようで違う点がいくつかあり、混在させるとややこしいことになってしまっていたのです。

こういったことを解消させるため、登場したのが PropertyAccessor オブジェクトです。
PropertyAccessor を使用すると、アイテムやフォルダの MAPI プロパティをプロパティ タグによって取得することができるようになります。たとえば、前述のインターネット メールのヘッダ情報は、MailItem オブジェクトの PropertyAccessor プロパティの GetProperty メソッドで SchemaName として "http://schemas.microsoft.com/mapi/proptag/0x007D001E" を指定することにより取得可能です。
ここで、0x007D001E というのがプロパティ タグになります。プロパティ タグは 32 ビットの数値であり、上位の 16 ビットがプロパティの ID、下位の 16 ビットがプロパティに格納されるデータの種類をあらわします。0x007D001E は数値を十六進数で表したものであり、007D がプロパティ ID、001E がデータの種類になります。

なお、http://msdn2.microsoft.com/en-us/library/ms529939.aspx にプロパティ タグのリストがありますので、アクセスしたいプロパティがオブジェクト モデルにない場合は、こちらから探すと見つかるかもしれません。また、ここに定義されていないプロパティもありますが、MFCMapiMDBVU32 といったツールでアイテムのプロパティ 一覧とそのプロパティ タグを見ることができますので、こちらを活用してみてください。

これから、おそらくこのオブジェクトは頻繁に登場することになると思います。

PropertyAccessor オブジェクト」への1件のフィードバック

コメントを残す