*LOCAL gobjTapi as "TAPI.TAPI.1" && VFP7 LOCAL gobjTapi gobjTapi = createobject("TAPI.TAPI.1") gobjTapi.Initialize() * VFP7 object browser drag&drop #DEFINE CLSID_String_VideoWindowTerm "{F7438990-D6EB-11D0-82A6-00AA00B5CA1B}" #DEFINE CLSID_String_VideoInputTerminal "{AAF578EC-DC70-11D0-8ED3-00C04FB6809F}" #DEFINE CLSID_String_HandsetTerminal "{AAF578EB-DC70-11D0-8ED3-00C04FB6809F}" #DEFINE CLSID_String_HeadsetTerminal "{AAF578ED-DC70-11D0-8ED3-00C04FB6809F}" #DEFINE CLSID_String_SpeakerphoneTerminal "{AAF578EE-DC70-11D0-8ED3-00C04FB6809F}" #DEFINE CLSID_String_MicrophoneTerminal "{AAF578EF-DC70-11D0-8ED3-00C04FB6809F}" #DEFINE CLSID_String_SpeakersTerminal "{AAF578F0-DC70-11D0-8ED3-00C04FB6809F}" #DEFINE CLSID_String_MediaStreamTerminal "{E2F7AEF7-4971-11D1-A671-006097C9A2E8}" #DEFINE TAPIPROTOCOL_String_PSTN "{831CE2D6-83B5-11D1-BB5C-00C04FB6809F}" #DEFINE TAPIPROTOCOL_String_H323 "{831CE2D7-83B5-11D1-BB5C-00C04FB6809F}" #DEFINE TAPIPROTOCOL_String_Multicast "{831CE2D8-83B5-11D1-BB5C-00C04FB6809F}" #DEFINE LINEADDRESSTYPE_PHONENUMBER 1 #DEFINE LINEADDRESSTYPE_SDP 2 #DEFINE LINEADDRESSTYPE_EMAILNAME 4 #DEFINE LINEADDRESSTYPE_DOMAINNAME 8 #DEFINE LINEADDRESSTYPE_IPADDRESS 16 #DEFINE LINEDIGITMODE_PULSE 1 #DEFINE LINEDIGITMODE_DTMF 2 #DEFINE LINEDIGITMODE_DTMFEND 4 #DEFINE TAPIMEDIATYPE_AUDIO 8 #DEFINE TAPIMEDIATYPE_VIDEO 32768 #DEFINE TAPIMEDIATYPE_DATAMODEM 16 #DEFINE TAPIMEDIATYPE_G3FAX 32 * VFP7 object browser drag&drop nSelectedType = TAPIMEDIATYPE_DATAMODEM *pick up the collection of Address objects LOCAL gobjAddress local objCollAddresses objCollAddresses = gobjTapi.Addresses *find address that supports the desired type, nSelectedType bFound = .f. For indexAddr = 1 To objCollAddresses.Count objCrtAddress = objCollAddresses.Item(indexAddr) objMediaSupport = objCrtAddress objAddressCapabilities = objCrtAddress If objMediaSupport.QueryMediaType( nSelectedType ) bFound = .t. EndIf objAddressCapabilities = .Null. objMediaSupport = .Null. objCrtAddress = .Null. If bFound EXIT endif endfor gobjAddress = objcollAddresses.Item(indexAddr) ? bFoundIf I were you would quickly upgrade to VFP7 where you can do most of these and more with drag&drop from object browser (as you might have guessed I did for some parts:).