ITAddressTranslation
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ITAddressTranslation インターフェイスは、発信先アドレスを別の形式に変換するためのメソッドを提供します。たとえば、アプリケーションはコール(通話)を発信する前に、アドレスを正規形式からダイヤル可能な形式に変換する必要がある場合があります。
メソッド 6
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
TranslateAddress メソッドは、アドレス変換情報インターフェイスを作成します。
| pAddressToTranslate | LPWSTR | in | 変換が必要なアドレスを格納した BSTR へのポインター。 |
| lCard | INT | in | 変換に使用するコーリングカード。 |
| lTranslateOptions | INT | in | 変換オプションを示す値。 LINETRANSLATEOPTION__Constants を参照してください。 |
| ppTranslated | ITAddressTranslationInfo** | out | 新しく作成された ITAddressTranslationInfo インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| ppTranslated パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| 不明な理由でメソッドが失敗しました。 | |
| lTranslateOptions の値が有効ではありません。 | |
| このアドレスには関連付けられた TSP がありません。 | |
| レジストリが破損しています。 | |
| TAPI でメソッドが失敗しました。 | |
| TSP が利用できません。 | |
| カード番号が有効ではありません。 |
解説(Remarks)
アプリケーションは、pAddressToTranslate のメモリを確保するために SysAllocString を使用し、変数が不要になったときにメモリを解放するために SysFreeString を使用する必要があります。
TranslateAddress メソッドは、TAPI 2.1 の LineTranslateAddress 関数の COM ラッパーです。
TAPI は、TranslateAddress が返す ITAddressTranslationInfo インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITAddressTranslationInfo インターフェイスの Release を呼び出す必要があります。
TranslateDialog メソッドは、アプリケーションモーダルのダイアログボックスを表示します。このダイアログボックスでは、これからダイヤルしようとする電話番号の現在のロケーションを変更したり、ロケーションやコーリングカードのパラメーターを調整したり、その結果を確認したりできます。
| hwndOwner | INT_PTR | in | ダイアログボックスを関連付けるウィンドウへのハンドル。NULL 値を指定すると、関数の実行中に作成されるウィンドウにオーナーウィンドウを持たせないことを示します。 |
| pAddressIn | LPWSTR | in | ロケーションパラメーターに対するユーザーの変更の結果を示すために使用される電話番号を格納した BSTR へのポインター。番号は正規形式である必要があります。このポインターは NULL のままにすることができ、その場合はダイアログボックスの電話番号部分は表示されません。pAddressIn パラメーターにサブアドレスや名前フィールド、または最初のアドレスと ASCII の CR および LF 文字で区切られた追加のアドレスが含まれている場合、ダイアログボックスでは最初のアドレスのみが使用されます。 |
戻り値
このメソッドは次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| hwndOwner パラメーターが有効なハンドルではないか、pAddressIn パラメーターが有効な電話番号ではありません。 | |
| pAddressIn パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| 予期しないエラーが発生しました。 | |
| アドレス変換のレジストリ設定が有効ではありません。 | |
| このアドレスの変換を実行できる TSP がありません。 | |
| ダイアログは既に開かれており、使用中です。 | |
| 現在のアドレスが有効ではありません。 | |
| TAPI は操作を完了できませんでした。 |
解説(Remarks)
アプリケーションは、pAddressIn のメモリを確保するために SysAllocString を使用し、変数が不要になったときにメモリを解放するために SysFreeString を使用する必要があります。
TranslateDialog メソッドは、TAPI 2.1 の LineTranslateDialog 関数の COM ラッパーです。
EnumerateLocations メソッドは、現在利用可能なアドレスのロケーションを列挙します。このメソッドは C および C++ アプリケーション向けに提供されています。Visual Basic で記述されたものなどのオートメーションクライアントアプリケーションは、get_Locations メソッドを使用する必要があります。
| ppEnumLocation | IEnumLocation** | out | 作成された IEnumLocation オブジェクトへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| ppEnumLocations パラメーターが有効なポインターではありません。 | |
| オブジェクトを作成するのに十分なメモリがありません。 |
解説(Remarks)
EnumerateLocations メソッドは、TAPI 2.1 の LineGetTranslateCaps 関数の COM ラッパーであり、その関数が返す LINETRANSLATECAPS 構造体からロケーション情報を取得します。
TAPI は、ITAddressTranslation::EnumerateLocations が返す IEnumLocation インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために IEnumLocation インターフェイスの Release を呼び出す必要があります。
get_Locations メソッドは、現在利用可能なアドレスのロケーションのコレクションを作成します。このメソッドは、Visual Basic で記述されたものなどのオートメーションクライアントアプリケーション向けに提供されています。C および C++ アプリケーションは、EnumerateLocations メソッドを使用する必要があります。
| pVariant | VARIANT* | out | ITLocationInfo インターフェイスポインター(ロケーションオブジェクト)の ITCollection を格納した VARIANT へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| pVariant パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
get_Locations メソッドは、TAPI 2.1 の LineGetTranslateCaps 関数の COM ラッパーであり、その関数が返す LINETRANSLATECAPS 構造体からロケーション情報を取得します。
TAPI は、ITAddressTranslation::get_Locations が返す ITLocationInfo インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITLocationInfo インターフェイスの Release を呼び出す必要があります。
EnumerateCallingCards メソッドは、アドレスに関連付けられたコーリングカードを列挙します。このメソッドは C および C++ アプリケーション向けに提供されています。Visual Basic で記述されたものなどのオートメーションクライアントアプリケーションは、get_CallingCards メソッドを使用する必要があります。
| ppEnumCallingCard | IEnumCallingCard** | out | IEnumCallingCard インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| ppEnumCallingCard パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
このメソッドは、TAPI 2.1 の LineGetTranslateCaps 関数の COM ラッパーであり、その関数が返す LINETRANSLATECAPS 構造体からコーリングカード情報を取得します。
TAPI は、ITAddressTranslation::EnumerateCallingCards が返す IEnumCallingCard インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために IEnumCallingCard インターフェイスの Release を呼び出す必要があります。
get_CallingCards メソッドは、アドレスに関連付けられたコーリングカードのコレクションを作成します。
| pVariant | VARIANT* | out | ITCallingCard インターフェイスポインターの ITCollection を格納した VARIANT へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| pVariant パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
get_CallingCards メソッドは、TAPI 2.2 の LineGetTranslateCaps 関数の COM ラッパーであり、その関数が返す LINETRANSLATECAPS 構造体からコーリングカード情報を取得します。
TAPI は、ITAddressTranslation::get_CallingCards が返す ITCallingCard インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、それに関連付けられたリソースを解放するために ITCallingCard インターフェイスの Release を呼び出す必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITAddressTranslation "{0C4D8F03-8DDB-11D1-A09E-00805FC147D3}" #usecom global ITAddressTranslation IID_ITAddressTranslation "{}" #comfunc global ITAddressTranslation_TranslateAddress 7 wstr,int,int,sptr #comfunc global ITAddressTranslation_TranslateDialog 8 sptr,wstr #comfunc global ITAddressTranslation_EnumerateLocations 9 sptr #comfunc global ITAddressTranslation_get_Locations 10 var #comfunc global ITAddressTranslation_EnumerateCallingCards 11 sptr #comfunc global ITAddressTranslation_get_CallingCards 12 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ITAddressTranslation "{0C4D8F03-8DDB-11D1-A09E-00805FC147D3}" #usecom global ITAddressTranslation IID_ITAddressTranslation "{}" #comfunc global ITAddressTranslation_TranslateAddress 7 wstr,int,int,sptr #comfunc global ITAddressTranslation_TranslateDialog 8 sptr,wstr #comfunc global ITAddressTranslation_EnumerateLocations 9 sptr #comfunc global ITAddressTranslation_get_Locations 10 sptr #comfunc global ITAddressTranslation_EnumerateCallingCards 11 sptr #comfunc global ITAddressTranslation_get_CallingCards 12 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。