Win32 API 日本語リファレンス
ホームSystem.AddressBook › IWABObject

IWABObject

COM
継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

使用しないでください。このインターフェイスは、メモリ割り当て関数およびデータベース保守関数への関数ポインターを保持する Windows アドレス帳 (WAB) オブジェクトへのアクセスを提供します。

メソッド 13

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetLastError(HRESULT hResult, DWORD ulFlags, MAPIERROR** lppMAPIError)

このメソッドは実装されていません。(IWABObject.GetLastError)

hResultHRESULTinTBD
ulFlagsDWORDinTBD
lppMAPIErrorMAPIERROR**inoutTBD

戻り値

このメソッドは値を返しません。

vtbl 4 HRESULT AllocateBuffer(DWORD cbSize, void** lppBuffer)

Windows アドレス帳 (WAB) のメソッドに渡すバッファーのメモリを割り当てます。バッファーは IWABObject::FreeBuffer で解放する必要があり、IWABObject::AllocateMore で再割り当てできます。

cbSizeDWORDin割り当てるバッファーのサイズをバイト単位で指定する ULONG 型の値です。
lppBuffervoid**out返されるバッファーへのポインターのアドレスです。

戻り値

型: HRESULT

要求されたバッファーが正常に割り当てられた場合は S_OK を返します。

vtbl 5 HRESULT AllocateMore(DWORD cbSize, void* lpObject, void** lppBuffer)

IWABObject::AllocateBuffer メソッドで以前に割り当てられた別のバッファーにリンクされるメモリバッファーを割り当てます。

cbSizeDWORDin割り当てるバッファーのサイズをバイト単位で指定する ULONG 型の値です。
lpObjectvoid*inIWABObject::AllocateBuffer を使用して割り当てられた既存のバッファーオブジェクトへのポインターです。
lppBuffervoid**out返されるバッファーへのポインターのアドレスです。このバッファーは lpObject にリンクされます。

戻り値

型: HRESULT

成功した場合は S_OK を返します。

解説(Remarks)

IWABObject::AllocateMore で割り当てられたバッファーを解放するには、 lpObject パラメーターで指定したバッファーポインターを IWABObject::FreeBuffer に渡す方法しかありません。IWABObject::AllocateBufferIWABObject::AllocateMore で割り当てられたメモリバッファー間のリンクにより、 IWABObject::FreeBuffer は 1 回の呼び出しで両方のバッファーを解放できます。

vtbl 6 HRESULT FreeBuffer(void* lpBuffer)

IWABObject::AllocateBuffer またはその他の Windows アドレス帳 (WAB) メソッドで割り当てられたメモリを解放します。

lpBuffervoid*in解放するバッファーへのポインターです。

戻り値

型: HRESULT

呼び出しが成功し、要求されたメモリを解放した場合は S_OK を返します。

vtbl 7 HRESULT Backup(LPSTR lpFileName)

このメソッドは実装されていません。(IWABObject.Backup)

lpFileNameLPSTRinTBD

戻り値

このメソッドは値を返しません。

vtbl 8 HRESULT Import(LPSTR lpWIP)

.wab ファイルをユーザーのアドレス帳にインポートします。

lpWIPLPSTRinWABIMPORTPARAM 構造体へのポインターです。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合はエラー値を返します。

解説(Remarks)

このメソッドを呼び出すときは、 WABIMPORTPARAM 構造体へのポインターを渡します。呼び出し元が構造体の ulFlags メンバーに MAPI_DIALOG を指定した場合、 Windows アドレス帳 (WAB) はインポート処理の進行状況を示すプログレスバー付きのダイアログボックスを表示します。呼び出し元はインポートするファイル名を指定できます。呼び出し元が NULL のファイル名を指定した場合、 WAB は GetOpenFileName ダイアログボックスを開き、インポートする .wab ファイルを選択するようユーザーに求めます。

このメソッドを公開する以前にリリースされたバージョンの WAB との互換性のため、 WABIMPORTPARAM 構造体へのポインターは、このメソッドに渡す前に LPSTR にキャストする必要があります。

vtbl 9 HRESULT Find(IAddrBook* lpIAB, HWND hWnd)

Windows アドレス帳 (WAB) の検索ダイアログボックスを起動します。

lpIABIAddrBook*in検索対象のアドレス帳を指定する IAddrBook インターフェイス へのポインターです。
hWndHWNDinoptional検索ダイアログボックスの親ウィンドウのハンドルを指定する HWND 型の値です。 この値は NULL でもかまいません。

戻り値

型: HRESULT

成功した場合は S_OK を返します。

vtbl 10 HRESULT VCardDisplay(IAddrBook* lpIAB, HWND hWnd, LPSTR lpszFileName)

vCard ファイルのプロパティを表示します。

lpIABIAddrBook*inアドレス帳オブジェクトを指定する IAddrBook インターフェイス へのポインターです。
hWndHWNDinoptional表示するダイアログボックスの親ウィンドウのハンドルを指定する HWND 型の値です。
lpszFileNameLPSTRin表示する vCard ファイルの完全パスを指定する LPSTR 型の値です。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 11 HRESULT LDAPUrl(IAddrBook* lpIAB, HWND hWnd, DWORD ulFlags, LPSTR lpszURL, IMailUser** lppMailUser)

Lightweight Directory Access Protocol (LDAP) URL を処理し、その URL から取得した結果を表示します。

lpIABIAddrBook*in使用するアドレス帳を指定する IAddrBook インターフェイス へのポインターです。
hWndHWNDinoptional表示するダイアログボックスの親ウィンドウのハンドルを指定する HWND 型の値です。
ulFlagsDWORDin

機能に影響するフラグを指定する ULONG 型の値です。

WABOBJECT_LDAPURL_RETURN_MAILUSER

クエリが単一の結果を返す場合に Mailuser オブジェクトを返すことを示します。クエリが複数の 結果を返した場合、WAB は MAPI_E_AMBIGUOUS_RECIPIENT を返します。

LDAP_AUTH_NEGOTIATE

WAB がサーバーとのネゴシエートバインドを試みる必要があることを示します。

MAPI_UNICODE

lpszURL を使用する前に LPWSTR にキャストする必要があることを示します。

lpszURLLPSTRinLDAP URL 文字列を指定する LPSTR 型の値です。この 文字列は "ldap://" で始まる必要があります。
lppMailUserIMailUser**out要求された場合に、返される Mailuser オブジェクトを受け取る IMailUser インターフェイスへのポインターのアドレスです。それ以外の場合は NULL です。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

この API の既定の動作は、LDAP サーバーに匿名でバインドすることです。ネゴシエートバインドを指定するには、 LDAP_AUTH_NEGOTIATEulFlags に渡します。 このフラグは Winldap.h で定義されています。

データを失わずに Unicode LDAP URL を渡すには、 URL ポインターを LPSTR にキャストして この関数に渡します。ulFlagsMAPI_UNICODE を含めるように設定すると、WAB は使用する前に URL を LPWSTR にキャストし直します。

vtbl 12 HRESULT VCardCreate(IAddrBook* lpIAB, DWORD ulFlags, LPSTR lpszVCard, IMailUser* lpMailUser)

指定した MailUser オブジェクトのプロパティを vCard ファイルに変換します。

lpIABIAddrBook*inアドレス帳を指定する IAddrBook インターフェイスへの ポインターです。
ulFlagsDWORDinフラグはありません。
lpszVCardLPSTRin作成するファイルの完全パス名を含む文字列を指定する LPSTR 型の値です。
lpMailUserIMailUser*inプロパティをファイルに書き込む対象のオブジェクトを指定する IMailUser インターフェイスへの ポインターです。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

完全なファイル名を指定する必要があります。ファイルが既に存在する場合は 上書きされます。vCard の作成は拡張可能です。クライアント アプリケーションが名前付きプロパティを使用して、Windows アドレス帳 (WAB) にクライアント固有のデータを格納している場合、 新しく作成される vCard にそのデータを含められる場合があります。

vtbl 13 HRESULT VCardRetrieve(IAddrBook* lpIAB, DWORD ulFlags, LPSTR lpszVCard, IMailUser** lppMailUser)

vCard ファイルを読み取り、vCard のプロパティを含む MailUser オブジェクトを作成します。

lpIABIAddrBook*inアドレス帳オブジェクトを指定する IAddrBook インターフェイス へのポインターです。
ulFlagsDWORDin

動作に影響するフラグを指定する ULONG 型の値です。

WAB_VCARD_FILE

lpszVCard パラメーターが 読み取るファイルのパス名であることを示します。

WAB_VCARD_STREAM

lpszVCard パラメーターが vCard の全内容を含むバッファーを指していることを示します。

lpszVCardLPSTRin読み取るファイルの完全パス名、または vCard バッファーの いずれかを含む文字列へのポインターです。
lppMailUserIMailUser**outvCard ファイルのプロパティを含んで作成される MailUser オブジェクトを受け取る IMailUser インターフェイスへの ポインターのアドレスです。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

vCard の取得は拡張可能です。クライアントアプリケーションが 名前付きプロパティを使用して Windows アドレス帳 (WAB) にクライアント固有のデータを格納し、 それを vCard にエクスポートしている場合、 WAB の vCard エンジンを拡張して、vCard からこのデータを読み取ることができます。 詳細については、Importing and Exporting Named Properties Through vCards を参照してください。lpszVCard パラメーターには、vCard ファイル名へのポインター、または vCard の全内容を含む NULL 終端文字列へのポインターを指定できます。ポインターがどちらの内容を表すかを示すには、ulFlags パラメーターを WAB_VCARD_FILE または WAB_VCARD_STREAM のいずれかに設定します。前者はファイル名を、後者は vCard の内容を含むバッファーへのポインターを示します。

vtbl 14 HRESULT GetMe(IAddrBook* lpIAB, DWORD ulFlags, DWORD* lpdwAction, SBinary* lpsbEID, HWND hwnd)

「ME」として指定されたオブジェクトのエントリ識別子を取得します。

lpIABIAddrBook*inアドレス帳オブジェクトを指定する IAddrBook インターフェイス へのポインターです。
ulFlagsDWORDin

機能に影響するフラグを指定する ULONG 型の値です。

AB_NO_DIALOG

ME 選択ダイアログボックスを抑制します。

WABOBJECT_ME_NOCREATE

ME の自動作成を抑制します。

lpdwActionDWORD*out新しい ME エントリが作成された場合に、戻り時にフラグ WABOBJECT_ME_NEW を受け取る DWORD 型の変数へのポインターです。 この変数は、既存の ME エントリの選択ではなく、新しい ME エントリの作成を通知するために使用されます。この変数は NULL でもかまいません。
lpsbEIDSBinary*out戻り時に ME オブジェクトのエントリ識別子を指定する SBinary 型の変数へのポインターです。
hwndHWNDinoptional表示するダイアログボックスの親ウィンドウのハンドルを指定する ULONG 型の値です。 親 HWNDULONG にキャストする必要があります。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

ユーザーは、自分自身を表す単一のエントリを Windows アドレス帳 (WAB) 内に 指定できます。このエントリは「ME」と呼ばれます。WAB ユーザーに関する情報を必要とするアプリケーションは、 このエントリにアクセスしてそのような情報を取得できます。IWABObject::GetMe メソッドは、「ME」として指定されたオブジェクトのエントリ識別子を返します。 アプリケーションは、そのエントリ識別子を使用してこのオブジェクトを開き、 プロパティを調べることができます。

WAB に ME エントリが存在しないときにアプリケーションが IWABObject::GetMe を呼び出すと、WAB はダイアログボックスを開き、新しい ME エントリを作成するか、 WAB 内の既存のエントリを ME エントリとして指定するようユーザーに求めます。

アプリケーションが ulFlags パラメーターに AB_NO_DIALOG フラグを渡し、ME エントリが存在しない場合、 選択ダイアログボックスは表示されず、新しいエントリが自動的に作成されます。

アプリケーションのユーザーが「ME」の存在を確認するために IWABObject::GetMe メソッドを呼び出すが、新しい ME エントリを自動的に作成したくない場合は、アプリケーションは WABOBJECT_ME_NOCREATE を渡す必要があります。このフラグは新しいエントリの作成を防ぎます。既存の ME エントリが見つからない場合、IWABObject::GetMe の呼び出しは失敗し、MAPI_E_NOT_FOUND を返します。

Note (Microsoft Internet Explorer 5 以降) ユーザーまたは呼び出し元アプリケーションが 新しい ME オブジェクトを作成すべきであると WAB に通知した場合、 WAB は新しいオブジェクトを作成し、ユーザーが以前に Windows 98 および Windows 2000 の登録 ウィザードを使用して入力した可能性のあるデータで 事前に設定しようとします。この事前設定された 情報はユーザーに表示され、ユーザーは 必要に応じて変更するオプションを持ちます。
vtbl 15 HRESULT SetMe(IAddrBook* lpIAB, DWORD ulFlags, SBinary sbEID, HWND hwnd)

特定の連絡先を ME オブジェクトとして指定します。

lpIABIAddrBook*inアドレス帳を指定する IAddrBook インターフェイス へのポインターです。
ulFlagsDWORDin

動作に影響するフラグを指定する ULONG 型の値です。

MAPI_DIALOG

選択ダイアログボックスを表示させます。

sbEIDSBinaryinME としてタグ付けする連絡先のエントリ識別子を指定する SBinary 型の値です。
hwndHWNDinoptionalダイアログボックスを表示するための親ウィンドウのハンドルを指定する ULONG 型の値です。渡す前に 親 HWNDULONG にキャストしてください。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合はエラーコードを返します。

解説(Remarks)

呼び出し元アプリケーションが ME オブジェクトとして設定するエントリ識別子を提供し、 ulFlags が 0 に設定されている場合、そのエントリ識別子に対応するエントリが 「ME」として指定され、以前の ME エントリはこの設定が解除されます。

呼び出し元アプリケーションが ulFlags パラメーターに MAPI_DIALOG を指定した場合、 Windows アドレス帳 (WAB) は、ユーザーが選択できる連絡先のリストを含む ME 選択ダイアログボックスを表示します。アプリケーションが エントリ識別子を渡した場合、そのエントリ識別子に対応するエントリが連絡先リスト内で あらかじめ選択されます。アプリケーションがエントリ識別子を渡さず、 WAB 内に現在 ME エントリが存在する場合は、現在の ME エントリが 連絡先リスト内であらかじめ選択されます。

フラグもエントリ識別子もどちらも渡さない組み合わせは無効です。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IWABObject "{}"
#usecom global IWABObject IID_IWABObject "{}"
#comfunc global IWABObject_GetLastError    3 int,int,var
#comfunc global IWABObject_AllocateBuffer  4 int,sptr
#comfunc global IWABObject_AllocateMore    5 int,sptr,sptr
#comfunc global IWABObject_FreeBuffer      6 sptr
#comfunc global IWABObject_Backup          7 str
#comfunc global IWABObject_Import          8 str
#comfunc global IWABObject_Find            9 sptr,sptr
#comfunc global IWABObject_VCardDisplay    10 sptr,sptr,str
#comfunc global IWABObject_LDAPUrl         11 sptr,sptr,int,str,sptr
#comfunc global IWABObject_VCardCreate     12 sptr,int,str,sptr
#comfunc global IWABObject_VCardRetrieve   13 sptr,int,str,sptr
#comfunc global IWABObject_GetMe           14 sptr,int,var,var,sptr
#comfunc global IWABObject_SetMe           15 sptr,int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。