ITAutomatedPhoneControl::SelectCall メソッド (tapi3if.h)
SelectCall メソッドは、pCall パラメーターが指す Call オブジェクトに対して現在の phone オブジェクトを選択します。
構文
HRESULT SelectCall(
[in] ITCallInfo *pCall,
[in] VARIANT_BOOL fSelectDefaultTerminals
);
パラメーター
[in] pCall
ITCallInfo インターフェイスへのポインター。
[in] fSelectDefaultTerminals
VARIANT_TRUE場合は、既定のターミナルを使用します。 詳細については、「解説」を参照してください。
戻り値
メソッドが成功した場合は、S_OK を返します。 それ以外の場合は、エラー値を返します。
解説
成功を返すには、このメソッドの呼び出しと電話の両方に対する所有者特権がアプリケーションに必要です。 電話がまだ所有者特権で開いていない場合、このメソッドは失敗します。
fSelectDefaultTerminals パラメーターが VARIANT_TRUE に設定されている場合、このメソッドは電話に関連付けられているすべての既定のターミナルを取得し、呼び出しでそれらを選択しようとします。 いずれかのターミナルのインスタンス化が失敗した場合、または呼び出しでいずれかのターミナルの選択が失敗した場合、 SelectCall メソッド全体が失敗を返し、通話は電話で選択されません。 これがアプリケーションに必要な動作でない場合、アプリケーションは fSelectDefaultTerminals パラメーターのVARIANT_FALSEを渡し、ターミナルの選択を個別に処理する必要があります。
このメソッドが正常に完了すると、phone オブジェクトは呼び出しオブジェクトへの参照を保持します (つまり、ITCallInfo で AddRef メソッドを呼び出します)。
Windows XP の場合、電話で選択できる通話は一度に 1 つだけです。 今後のバージョンの TAPI では、複数の呼び出しの外観をサポートする電話で使用するために、複数の呼び出しの同時選択がサポートされる場合があります。
呼び出しは、(1) アプリケーションで ITAutomatedPhoneControl::UnselectCall を呼び出すことができるか、(2) 電話オブジェクト自体が ITAutomatedPhoneControl::UnselectCall を呼び出すことができるという 2 つの方法で選択できないことに注意してください。 この場合の詳細については、次の一覧を参照してください。
このメソッドが正常に完了すると、選択した呼び出しで次の処理が実行されます。
- 電話機が onhook になると、電話オブジェクトは、CS_DISCONNECTED呼び出し状態ではない現在処理されている通話で ITBasicCallControl::D isconnect を呼び出します。
- 選択した呼び出しがCS_DISCONNECTED呼び出し状態に達した場合、電話オブジェクトは ITAutomatedPhoneControl::UnselectCall メソッドを使用して呼び出しの選択を自動的に解除します。
- 電話が閉じている場合、選択した通話はその電話から自動的に選択解除されます。
- 電話機が offhook になった場合、または電話が offhook のときにコールが選択されている場合、電話オブジェクトは、CS_OFFERING通話状態にある場合、現在処理されている通話で ITBasicCallControl::Answer を呼び出します。
- 電話オブジェクトは、 ITAutomatedPhoneControl::StartTone( PT_RINGBACK, 0 ) を呼び出します。これは、CS_INPROGRESS通話状態で通話が選択され、電話が offhook の場合、または電話で選択されている通話がCS_INPROGRESS通話状態に入り、電話が offhook の場合です。
- 電話オブジェクトは、CS_CONNECTED通話状態で呼び出しが選択されている場合、または電話で選択された通話がCS_CONNECTED通話状態になったときに、 ITAutomatedPhoneControl::StopTone をそれ自体で呼び出します。
- 電話オブジェクトは、CS_OFFERING、CS_INPROGRESS、またはCS_CONNECTED通話状態で通話が選択され、電話が onhook の場合、 ITAutomatedPhoneControl::StartRinger( 0, 0 ) をそれ自体で呼び出します。 これは、電話で選択されたコールがCS_OFFERING、CS_INPROGRESS、またはCS_CONNECTEDコール状態に入り、電話機がオンhookである場合にも発生します。
- 電話機が onhook の場合、電話オブジェクトはそれ自体で ITAutomatedPhoneControl::StopRinger を呼び出します。
- 電話が offhook で、CS_DISCONNECTED呼び出し状態イベントの原因が CEC_DISCONNECT_BUSY と等しい場合、電話オブジェクトは ITAutomatedPhoneControl::StartTone( PT_BUSY, 0 ) を呼び出します。
- 電話が offhook で、CS_DISCONNECTED呼び出し状態イベントの原因が CEC_DISCONNECT_NORMAL と等しい場合、電話オブジェクトは ITAutomatedPhoneControl::StopTone を呼び出します。
- 電話が offhook で、CS_DISCONNECTED呼び出し状態イベントでCEC_DISCONNECT_BUSYが発生せず、CEC_DISCONNECT_NORMALが発生しない場合、電話オブジェクトは ITAutomatedPhoneControl::StartTone( PT_ERROR, 0) を呼び出します。
必要条件
対象プラットフォーム | Windows |
ヘッダー | tapi3if.h (Tapi3.h を含む) |
Library | Uuid.lib |
[DLL] | Tapi3.dll |