IWABObject
COM公式ドキュメント
使用しないでください。このインターフェイスは、メモリ割り当て関数およびデータベース保守関数への関数ポインターを保持する Windows アドレス帳 (WAB) オブジェクトへのアクセスを提供します。
メソッド 13
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このメソッドは実装されていません。(IWABObject.GetLastError)
| hResult | HRESULT | in | TBD |
| ulFlags | DWORD | in | TBD |
| lppMAPIError | MAPIERROR** | inout | TBD |
戻り値
このメソッドは値を返しません。
Windows アドレス帳 (WAB) のメソッドに渡すバッファーのメモリを割り当てます。バッファーは IWABObject::FreeBuffer で解放する必要があり、IWABObject::AllocateMore で再割り当てできます。
| cbSize | DWORD | in | 割り当てるバッファーのサイズをバイト単位で指定する ULONG 型の値です。 |
| lppBuffer | void** | out | 返されるバッファーへのポインターのアドレスです。 |
戻り値
型: HRESULT
要求されたバッファーが正常に割り当てられた場合は S_OK を返します。
IWABObject::AllocateBuffer メソッドで以前に割り当てられた別のバッファーにリンクされるメモリバッファーを割り当てます。
| cbSize | DWORD | in | 割り当てるバッファーのサイズをバイト単位で指定する ULONG 型の値です。 |
| lpObject | void* | in | IWABObject::AllocateBuffer を使用して割り当てられた既存のバッファーオブジェクトへのポインターです。 |
| lppBuffer | void** | out | 返されるバッファーへのポインターのアドレスです。このバッファーは lpObject にリンクされます。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。
解説(Remarks)
IWABObject::AllocateMore で割り当てられたバッファーを解放するには、 lpObject パラメーターで指定したバッファーポインターを IWABObject::FreeBuffer に渡す方法しかありません。IWABObject::AllocateBuffer と IWABObject::AllocateMore で割り当てられたメモリバッファー間のリンクにより、 IWABObject::FreeBuffer は 1 回の呼び出しで両方のバッファーを解放できます。
IWABObject::AllocateBuffer またはその他の Windows アドレス帳 (WAB) メソッドで割り当てられたメモリを解放します。
| lpBuffer | void* | in | 解放するバッファーへのポインターです。 |
戻り値
型: HRESULT
呼び出しが成功し、要求されたメモリを解放した場合は S_OK を返します。
このメソッドは実装されていません。(IWABObject.Backup)
| lpFileName | LPSTR | in | TBD |
戻り値
このメソッドは値を返しません。
.wab ファイルをユーザーのアドレス帳にインポートします。
| lpWIP | LPSTR | in | WABIMPORTPARAM 構造体へのポインターです。 |
戻り値
型: HRESULT
成功した場合は S_OK を、それ以外の場合はエラー値を返します。
解説(Remarks)
このメソッドを呼び出すときは、 WABIMPORTPARAM 構造体へのポインターを渡します。呼び出し元が構造体の ulFlags メンバーに MAPI_DIALOG を指定した場合、 Windows アドレス帳 (WAB) はインポート処理の進行状況を示すプログレスバー付きのダイアログボックスを表示します。呼び出し元はインポートするファイル名を指定できます。呼び出し元が NULL のファイル名を指定した場合、 WAB は GetOpenFileName ダイアログボックスを開き、インポートする .wab ファイルを選択するようユーザーに求めます。
このメソッドを公開する以前にリリースされたバージョンの WAB との互換性のため、 WABIMPORTPARAM 構造体へのポインターは、このメソッドに渡す前に LPSTR にキャストする必要があります。
Windows アドレス帳 (WAB) の検索ダイアログボックスを起動します。
| lpIAB | IAddrBook* | in | 検索対象のアドレス帳を指定する IAddrBook インターフェイス へのポインターです。 |
| hWnd | HWND | inoptional | 検索ダイアログボックスの親ウィンドウのハンドルを指定する HWND 型の値です。 この値は NULL でもかまいません。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。
vCard ファイルのプロパティを表示します。
| lpIAB | IAddrBook* | in | アドレス帳オブジェクトを指定する IAddrBook インターフェイス へのポインターです。 |
| hWnd | HWND | inoptional | 表示するダイアログボックスの親ウィンドウのハンドルを指定する HWND 型の値です。 |
| lpszFileName | LPSTR | in | 表示する vCard ファイルの完全パスを指定する LPSTR 型の値です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Lightweight Directory Access Protocol (LDAP) URL を処理し、その URL から取得した結果を表示します。
| lpIAB | IAddrBook* | in | 使用するアドレス帳を指定する IAddrBook インターフェイス へのポインターです。 |
| hWnd | HWND | inoptional | 表示するダイアログボックスの親ウィンドウのハンドルを指定する HWND 型の値です。 |
| ulFlags | DWORD | in | 機能に影響するフラグを指定する ULONG 型の値です。 WABOBJECT_LDAPURL_RETURN_MAILUSERクエリが単一の結果を返す場合に Mailuser オブジェクトを返すことを示します。クエリが複数の 結果を返した場合、WAB は MAPI_E_AMBIGUOUS_RECIPIENT を返します。 LDAP_AUTH_NEGOTIATEWAB がサーバーとのネゴシエートバインドを試みる必要があることを示します。 MAPI_UNICODElpszURL を使用する前に LPWSTR にキャストする必要があることを示します。 |
| lpszURL | LPSTR | in | LDAP URL 文字列を指定する LPSTR 型の値です。この 文字列は "ldap://" で始まる必要があります。 |
| lppMailUser | IMailUser** | out | 要求された場合に、返される Mailuser オブジェクトを受け取る IMailUser インターフェイスへのポインターのアドレスです。それ以外の場合は NULL です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
この API の既定の動作は、LDAP サーバーに匿名でバインドすることです。ネゴシエートバインドを指定するには、 LDAP_AUTH_NEGOTIATE を ulFlags に渡します。 このフラグは Winldap.h で定義されています。
データを失わずに Unicode LDAP URL を渡すには、 URL ポインターを LPSTR にキャストして この関数に渡します。ulFlags に MAPI_UNICODE を含めるように設定すると、WAB は使用する前に URL を LPWSTR にキャストし直します。
指定した MailUser オブジェクトのプロパティを vCard ファイルに変換します。
| lpIAB | IAddrBook* | in | アドレス帳を指定する IAddrBook インターフェイスへの ポインターです。 |
| ulFlags | DWORD | in | フラグはありません。 |
| lpszVCard | LPSTR | in | 作成するファイルの完全パス名を含む文字列を指定する LPSTR 型の値です。 |
| lpMailUser | IMailUser* | in | プロパティをファイルに書き込む対象のオブジェクトを指定する IMailUser インターフェイスへの ポインターです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
完全なファイル名を指定する必要があります。ファイルが既に存在する場合は 上書きされます。vCard の作成は拡張可能です。クライアント アプリケーションが名前付きプロパティを使用して、Windows アドレス帳 (WAB) にクライアント固有のデータを格納している場合、 新しく作成される vCard にそのデータを含められる場合があります。
vCard ファイルを読み取り、vCard のプロパティを含む MailUser オブジェクトを作成します。
| lpIAB | IAddrBook* | in | アドレス帳オブジェクトを指定する IAddrBook インターフェイス へのポインターです。 |
| ulFlags | DWORD | in | 動作に影響するフラグを指定する ULONG 型の値です。 WAB_VCARD_FILElpszVCard パラメーターが 読み取るファイルのパス名であることを示します。 WAB_VCARD_STREAMlpszVCard パラメーターが vCard の全内容を含むバッファーを指していることを示します。 |
| lpszVCard | LPSTR | in | 読み取るファイルの完全パス名、または vCard バッファーの いずれかを含む文字列へのポインターです。 |
| lppMailUser | IMailUser** | out | vCard ファイルのプロパティを含んで作成される 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 の内容を含むバッファーへのポインターを示します。
「ME」として指定されたオブジェクトのエントリ識別子を取得します。
| lpIAB | IAddrBook* | in | アドレス帳オブジェクトを指定する IAddrBook インターフェイス へのポインターです。 |
| ulFlags | DWORD | in | 機能に影響するフラグを指定する ULONG 型の値です。 AB_NO_DIALOGME 選択ダイアログボックスを抑制します。 WABOBJECT_ME_NOCREATEME の自動作成を抑制します。 |
| lpdwAction | DWORD* | out | 新しい ME エントリが作成された場合に、戻り時にフラグ WABOBJECT_ME_NEW を受け取る DWORD 型の変数へのポインターです。 この変数は、既存の ME エントリの選択ではなく、新しい ME エントリの作成を通知するために使用されます。この変数は NULL でもかまいません。 |
| lpsbEID | SBinary* | out | 戻り時に ME オブジェクトのエントリ識別子を指定する SBinary 型の変数へのポインターです。 |
| hwnd | HWND | inoptional | 表示するダイアログボックスの親ウィンドウのハンドルを指定する ULONG 型の値です。 親 HWND は ULONG にキャストする必要があります。 |
戻り値
型: 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 を返します。
特定の連絡先を ME オブジェクトとして指定します。
| lpIAB | IAddrBook* | in | アドレス帳を指定する IAddrBook インターフェイス へのポインターです。 |
| ulFlags | DWORD | in | 動作に影響するフラグを指定する ULONG 型の値です。 MAPI_DIALOG選択ダイアログボックスを表示させます。 |
| sbEID | SBinary | in | ME としてタグ付けする連絡先のエントリ識別子を指定する SBinary 型の値です。 |
| hwnd | HWND | inoptional | ダイアログボックスを表示するための親ウィンドウのハンドルを指定する ULONG 型の値です。渡す前に 親 HWND を ULONG にキャストしてください。 |
戻り値
型: HRESULT
成功した場合は S_OK を、それ以外の場合はエラーコードを返します。
解説(Remarks)
呼び出し元アプリケーションが ME オブジェクトとして設定するエントリ識別子を提供し、 ulFlags が 0 に設定されている場合、そのエントリ識別子に対応するエントリが 「ME」として指定され、以前の ME エントリはこの設定が解除されます。
呼び出し元アプリケーションが ulFlags パラメーターに MAPI_DIALOG を指定した場合、 Windows アドレス帳 (WAB) は、ユーザーが選択できる連絡先のリストを含む ME 選択ダイアログボックスを表示します。アプリケーションが エントリ識別子を渡した場合、そのエントリ識別子に対応するエントリが連絡先リスト内で あらかじめ選択されます。アプリケーションがエントリ識別子を渡さず、 WAB 内に現在 ME エントリが存在する場合は、現在の ME エントリが 連絡先リスト内であらかじめ選択されます。
フラグもエントリ識別子もどちらも渡さない組み合わせは無効です。
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 指定が可能。#define global IID_IWABObject "{}" #usecom global IWABObject IID_IWABObject "{}" #comfunc global IWABObject_GetLastError 3 int,int,sptr #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,sptr,sptr,sptr #comfunc global IWABObject_SetMe 15 sptr,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。