All pastes #784704 Raw Edit

Something

public text v1 · immutable
·published 2007-11-19 20:23 UTC
rendered paste body
void MakeTapiCall(_bstr_t &bstrLine, _bstr_t &bstrNumber)  
  
{  
  
ULONG                 ul;  
  
_bstr_t               name;  
  
HRESULT               hr;  
  
ITTAPIPtr             pTapi;  
  
ITAddressPtr          pAddress;  
  
IEnumAddressPtr       pEnumAddress;  
  
ITBasicCallControlPtr pCall;  
  
// Initialize TAPI  
  
hr = pTapi.CreateInstance(CLSID_TAPI);  
  
hr = pTapi->Initialize();  
  
// Look for the requested line  
  
pEnumAddress = pTapi->EnumerateAddresses();  
  
while ( pEnumAddress->Next(1, &pAddress, &ul) == S_OK )  
  
{  
  
name = pAddress->AddressName;  
  
if ( name == bstrLine )  
  
break;  
  
pAddress.Release();  
  
pAddress = 0;  
  
}  
  
// If the line was found, then make a call  
  
if ( pAddress )  
  
{  
  
pCall = pAddress->CreateCall(bstrNumber,  
  
LINEADDRESSTYPE_PHONENUMBER,  
  
TAPIMEDIATYPE_AUDIO);  
  
// Make the call  
  
hr = pCall->Connect(true);  
  
// Wait a while - do something sensible here  
  
// while the call is ongoing  
  
Sleep(10000); // This isn't all that sensible  
  
// Hangup  
  
hr = pCall->Disconnect(DC_NORMAL);  
  
}  
  
// Shutdown TAPI  
  
hr = pTapi->Shutdown();  
  
pTapi.Release();  
  
}  
  
int main()  
  
{  
  
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);  
  
MakeTapiCall( _bstr_t("56Kbps Internal Modem"),  
  
_bstr_t("2017773456") );  
  
CoUninitialize();  
  
}