Método ITAutomatedPhoneControl::SelectCall (tapi3if.h)
O método SelectCall seleciona o objeto de telefone atual no objeto Call apontado pelo parâmetro pCall .
Sintaxe
HRESULT SelectCall(
[in] ITCallInfo *pCall,
[in] VARIANT_BOOL fSelectDefaultTerminals
);
Parâmetros
[in] pCall
Ponteiro para a interface ITCallInfo .
[in] fSelectDefaultTerminals
Se VARIANT_TRUE, use terminais padrão. Para obter mais informações, consulte a seção Comentários a seguir.
Valor retornado
Se o método for bem-sucedido, retornará S_OK. Caso contrário, ele retornará um valor de erro.
Comentários
O aplicativo deve ter privilégio de proprietário na chamada e no telefone para que esse método retorne êxito. Se o telefone ainda não estiver aberto com privilégio de proprietário, esse método falhará.
Se o parâmetro fSelectDefaultTerminals estiver definido como VARIANT_TRUE, esse método recuperará todos os terminais padrão associados ao telefone e tentará selecioná-los na chamada. Se a instanciação de um dos terminais falhar ou se a seleção de um dos terminais na chamada falhar, todo o método SelectCall retornará uma falha e a chamada não será selecionada no telefone. Se esse não for o comportamento necessário para um aplicativo, o aplicativo deverá passar VARIANT_FALSE para o parâmetro fSelectDefaultTerminals e manipular a seleção de terminal separadamente.
Após a conclusão bem-sucedida desse método, o objeto de telefone mantém uma referência ao objeto de chamada (ou seja, ele chama o método AddRef em ITCallInfo).
Para o Windows XP, apenas uma chamada por vez pode ser selecionada em um telefone. Versões futuras do TAPI podem dar suporte à seleção simultânea de várias chamadas para uso com telefones que dão suporte a várias aparências de chamada.
Observe que uma chamada pode ser desmarcada de duas maneiras: (1) o aplicativo pode invocar ITAutomatedPhoneControl::UnselectCall ou (2) o próprio objeto de telefone pode invocar ITAutomatedPhoneControl::UnselectCall. Consulte a lista a seguir para obter informações sobre quando isso acontece.
Depois que esse método for concluído com êxito, a seguinte manipulação será executada na chamada selecionada:
- Quando o telefone é ativado, o objeto de telefone chama ITBasicCallControl::D isconnect em qualquer chamada tratada no momento que ainda não esteja no estado de chamada CS_DISCONNECTED.
- Se uma chamada selecionada atingir o estado de chamada CS_DISCONNECTED, o objeto de telefone desmarcará automaticamente a chamada usando o método ITAutomatedPhoneControl::UnselectCall .
- Se o telefone estiver fechado, qualquer chamada selecionada será desmarcada automaticamente desse telefone.
- Quando o telefone fica desligado ou uma chamada é selecionada quando o telefone está offhook, o objeto de telefone chama ITBasicCallControl::Answer na chamada tratada no momento se estiver no estado de chamada CS_OFFERING.
- O objeto de telefone chama ITAutomatedPhoneControl::StartTone( PT_RINGBACK, 0 ) em si mesmo quando uma chamada é selecionada nele no estado de chamada CS_INPROGRESS e o telefone está desligado ou quando uma chamada que foi selecionada no telefone entra no estado de chamada CS_INPROGRESS e o telefone está desligado.
- O objeto de telefone chama ITAutomatedPhoneControl::StopTone em si mesmo quando uma chamada é selecionada no estado de chamada CS_CONNECTED ou quando uma chamada que foi selecionada no telefone entra no estado de chamada CS_CONNECTED.
- O objeto de telefone chama ITAutomatedPhoneControl::StartRinger( 0, 0 ) em si mesmo quando uma chamada é selecionada nele no estado de chamada CS_OFFERING, CS_INPROGRESS ou CS_CONNECTED e o telefone está ativado. Isso também ocorre quando uma chamada que foi selecionada no telefone entra no estado de chamada CS_OFFERING, CS_INPROGRESS ou CS_CONNECTED e o telefone está ativado.
- Se o telefone estiver ativado, o objeto de telefone chamará ITAutomatedPhoneControl::StopRinger em si mesmo.
- Se o telefone estiver offhook e o evento de estado de chamada CS_DISCONNECTED tiver uma causa igual a CEC_DISCONNECT_BUSY, o objeto de telefone chamará ITAutomatedPhoneControl::StartTone( PT_BUSY, 0 ).
- Se o telefone estiver offhook e o evento de estado de chamada CS_DISCONNECTED tiver uma causa igual a CEC_DISCONNECT_NORMAL, o objeto de telefone chamará ITAutomatedPhoneControl::StopTone.
- Se o telefone estiver offhook e o evento de estado de chamada CS_DISCONNECTED não tiver nenhuma causa CEC_DISCONNECT_BUSY nem causar CEC_DISCONNECT_NORMAL, o objeto de telefone chamará ITAutomatedPhoneControl::StartTone( PT_ERROR, 0 ).
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | tapi3if.h (inclua Tapi3.h) |
Biblioteca | Uuid.lib |
DLL | Tapi3.dll |