Поделиться через


Метод ITAutomatedPhoneControl::SelectCall (tapi3if.h)

Метод SelectCall выбирает текущий объект phone в объекте Call, на который указывает параметр pCall .

Синтаксис

HRESULT SelectCall(
  [in] ITCallInfo   *pCall,
  [in] VARIANT_BOOL fSelectDefaultTerminals
);

Параметры

[in] pCall

Указатель на интерфейс ITCallInfo .

[in] fSelectDefaultTerminals

Если VARIANT_TRUE, используйте терминалы по умолчанию. Дополнительные сведения см. в разделе "Примечания".

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В противном случае возвращается значение ошибки.

Комментарии

Чтобы этот метод вернул успешное выполнение, приложение должно иметь права владельца как на вызове, так и на телефоне. Если телефон еще не открыт с правами владельца, этот метод завершается ошибкой.

Если параметру fSelectDefaultTerminals присвоено значение VARIANT_TRUE, этот метод извлекает все терминалы по умолчанию, связанные с телефоном, и пытается выбрать их при вызове. Если создание экземпляра одного из терминалов завершается сбоем или выбор одного из терминалов в вызове завершается сбоем, то весь метод SelectCall вернет ошибку, и вызов не будет выбран на телефоне. Если это не является обязательным для приложения поведением, приложение должно передать VARIANT_FALSE для параметра fSelectDefaultTerminals и обрабатывать выбор терминала отдельно.

При успешном завершении этого метода объект phone сохраняет ссылку на объект вызова (то есть вызывает метод AddRef в ITCallInfo).

Для Windows XP на телефоне можно выбрать только один звонок за раз. Будущие версии TAPI могут поддерживать одновременный выбор нескольких вызовов для использования с телефонами, поддерживающими несколько вызовов.

Обратите внимание, что вызов можно отменить двумя способами: (1) приложение может вызвать ITAutomatedPhoneControl::UnselectCall или (2) сам объект телефона может вызвать ITAutomatedPhoneControl::UnselectCall. Сведения о том, когда это происходит, см. в следующем списке.

После успешного завершения этого метода в выбранном вызове выполняется следующая обработка:

  • Когда телефон переходит в перехватчик, объект телефона вызывает ITBasicCallControl::D isconnect при любом обработанном вызове, который еще не находится в состоянии CS_DISCONNECTED вызова.
  • Если выбранный вызов достигает состояния CS_DISCONNECTED вызова, объект телефона автоматически отменяет выбор вызова с помощью метода ITAutomatedPhoneControl::UnselectCall .
  • Если телефон закрыт, любой выбранный вызов автоматически отменяется с этого телефона.
  • Когда телефон отключается или выбирается звонок, когда телефон находится в состоянии offhook, объект телефона вызывает ITBasicCallControl::Answer в текущем обработанном вызове, если он находится в состоянии вызова CS_OFFERING.
  • Телефонный объект вызывает ITAutomatedPhoneControl::StartTone( PT_RINGBACK, 0 ) сам по себе, когда звонок выбирается в CS_INPROGRESS состоянии звонка и телефон находится в состоянии offhook, или когда звонок, выбранный на телефоне, переходит в состояние CS_INPROGRESS звонка, а телефон отключен.
  • Телефонный объект вызывает itAutomatedPhoneControl::StopTone сам по себе, когда на нем выбран вызов в состоянии CS_CONNECTED вызова или когда звонок, выбранный на телефоне, переходит в состояние CS_CONNECTED звонка.
  • Телефонный объект вызывает ITAutomatedPhoneControl::StartRinger( 0, 0 ) сам по себе, когда для него выбран вызов в состоянии CS_OFFERING, CS_INPROGRESS или CS_CONNECTED, а телефон включен. Это также происходит, когда звонок, выбранный на телефоне, переходит в состояние вызова CS_OFFERING, CS_INPROGRESS или CS_CONNECTED, а телефон включен.
В зависимости от обстоятельств объект телефона выполняет одно из следующих действий, когда для него выбран звонок в CS_DISCONNECTED состоянии звонка или когда звонок, выбранный на телефоне, переходит в состояние CS_DISCONNECTED звонка.
  • Если телефон включен, объект телефона сам вызывает ITAutomatedPhoneControl::StopRinger .
  • Если телефон отключен и событие состояния вызова CS_DISCONNECTED имеет причину, равную CEC_DISCONNECT_BUSY, то телефонный объект вызывает ITAutomatedPhoneControl::StartTone( PT_BUSY, 0 ).
  • Если телефон отключен и событие состояния вызова CS_DISCONNECTED имеет причину, равную CEC_DISCONNECT_NORMAL, то телефонный объект вызывает itAutomatedPhoneControl::StopTone.
  • Если телефон отключен и событие состояния вызова CS_DISCONNECTED не вызывает ни CEC_DISCONNECT_BUSY, ни CEC_DISCONNECT_NORMAL, то телефонный объект вызывает ITAutomatedPhoneControl::StartTone( PT_ERROR, 0 ).

Требования

   
Целевая платформа Windows
Header tapi3if.h (включая Tapi3.h)
Библиотека Uuid.lib
DLL Tapi3.dll

См. также раздел

ITAutomatedPhoneControl

ITBasicCallControl

ITCallInfo