ITAutomatedPhoneControl::SelectCall 方法 (tapi3if.h)

SelectCall 方法选择 pCall 参数指向的 Call 对象上的当前电话对象。

语法

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,并单独处理终端选择。

成功完成此方法后,电话对象将保留对调用对象的引用 (即在 ITCallInfo) 调用 AddRef 方法。

对于 Windows XP,一次只能选择一个电话呼叫。 未来版本的 TAPI 可能支持同时选择多个呼叫,以便与支持多个呼叫外观的电话配合使用。

请注意,可以通过两种方式取消选择呼叫: (1) 应用程序可以调用 ITAutomatedPhoneControl::UnselectCall; (2) 电话对象本身可以调用 ITAutomatedPhoneControl::UnselectCall。 有关何时发生这种情况的信息,请参阅以下列表。

此方法成功完成后,对所选调用执行以下处理:

  • 当电话启动时,电话对象在尚未处于CS_DISCONNECTED呼叫状态的任何当前处理的呼叫上调用 ITBasicCallControl::D isconnect
  • 如果所选呼叫达到CS_DISCONNECTED呼叫状态,则电话对象使用 ITAutomatedPhoneControl::UnselectCall 方法自动取消选择呼叫。
  • 如果电话已关闭,则从该电话中自动取消选择任何所选呼叫。
  • 当电话脱钩或选择呼叫时,如果电话处于CS_OFFERING呼叫状态,则电话对象在当前处理的呼叫上调用 ITBasicCallControl::Answer
  • 当在CS_INPROGRESS呼叫状态中选择呼叫并且电话处于非接通状态时,或者在电话上选择的呼叫进入CS_INPROGRESS呼叫状态且电话处于 offhook状态时,电话对象调用 ITAutomatedPhoneControl::Start ( PT_RINGBACK Tone 本身 ) 。
  • 当在CS_CONNECTED呼叫状态中选择呼叫时,或者在电话上选择的呼叫进入CS_CONNECTED呼叫状态时,电话对象将调用 ITAutomatedPhoneControl::StopTone
  • 当在CS_OFFERING、CS_INPROGRESS或CS_CONNECTED呼叫状态中选择呼叫并且电话处于 onhook 状态时,电话对象调用 ITAutomatedPhoneControl::StartRinger ( 0, 0 ) 。 当已在电话上选择的呼叫进入CS_OFFERING、CS_INPROGRESS或CS_CONNECTED呼叫状态且电话处于打开状态时,也会发生这种情况。
根据具体情况,当在CS_DISCONNECTED呼叫状态中选择呼叫时,或者在电话上选择的呼叫进入CS_DISCONNECTED呼叫状态时,电话对象将执行以下操作之一。

要求

   
目标平台 Windows
标头 tapi3if.h (包括 Tapi3.h)
Library Uuid.lib
DLL Tapi3.dll

另请参阅

ITAutomatedPhoneControl

ITBasicCallControl

ITCallInfo