建议上 http://www.wellcity.com/Sourcecode/Internet/page1.html找找

解决方案 »

  1.   

    我给你贴一段代码:用TAPI写的,我就不注释了.其中有些地方我还没写完,因为我还没有用到它的地方,这仅是为了学习试写的一段,不过可以拨号了.
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include <tapi.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //-------
    HLINEAPP m_htapi;
    DWORD m_dwNumLines;
    DWORD apiver;
    HLINE m_hline;
    HCALL m_hcall;
    HANDLE m_hmodem;VOID FAR PASCAL lineCallbackFunc(
        DWORD hDevice,
        DWORD dwMsg,
        DWORD dwCallbackInstance,
        DWORD dwParam1,
        DWORD dwParam2,
        DWORD dwParam3
       )
       {
       }
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        LONG lResult;
        lResult=::lineInitialize(&m_htapi,
                                HInstance,
                                lineCallbackFunc,
                                "TAPITest",
                                &m_dwNumLines);
        if(lResult)
        {
            ShowMessage(lResult);
            return;
        }
        Edit1->Text=IntToStr(m_dwNumLines);
    }
    //---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
    {
        LINEEXTENSIONID extid;    char buf[256];
        LONG lResult;
        if(m_htapi)
        {
            for(int line=0;line<m_dwNumLines;line++)
            {
                lResult=lineNegotiateAPIVersion(m_htapi,
                    line,
                    0x00010003,0x00020002,
                    &apiver,
                    &extid);
                if(lResult)
                {
                    ShowMessage(lResult);
                    continue;
                }
                sprintf(buf,"ver:%d extid:%d",apiver,extid);
                ShowMessage(buf);
            }    }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
        LONG lResult;
        lResult=::lineOpen(m_htapi,
            1,
            &m_hline,
            apiver,
            0,
            (DWORD)this,
            LINECALLPRIVILEGE_NONE,
            LINEMEDIAMODE_INTERACTIVEVOICE,
            0);
        if(lResult)
        {
            ShowMessage(lResult);
            return;
        }
        Edit3->Text=lResult;
    }
    //---------------------------------------------------------------------------void __fastcall TForm1::Button5Click(TObject *Sender)
    {
        LPLINETRANSLATEOUTPUT lpLTO;
        char szDialStr[256]={"8122151"};
        strcpy(szDialStr,Edit6->Text.c_str());
        LONG lResult;
        LINECALLPARAMS lcp;
        memset(&lcp,0,sizeof(LINECALLPARAMS));
        lcp.dwTotalSize=sizeof(LINECALLPARAMS);
        lcp.dwBearerMode=LINEBEARERMODE_VOICE;
        lcp.dwMediaMode=LINEMEDIAMODE_INTERACTIVEVOICE;
        lResult=::lineMakeCall(m_hline,
            &m_hcall,
            szDialStr,
            0,
            &lcp);
        if(lResult<0)
        {
            ShowMessage(lResult);
            return;
        }
        if(lResult>0)
            Edit4->Text=IntToStr(lResult);
    }
    //---------------------------------------------------------------------------void __fastcall TForm1::Button7Click(TObject *Sender)
    {
        LPVARSTRING lpVarString=NULL;
        size_t dwNeeded=sizeof(VARSTRING);
        LONG lResult=0;
        for(int i=0;i<2;i++)
        {
            lpVarString=(LPVARSTRING)calloc(dwNeeded,1);
            if(!lpVarString)
                goto error;
            lpVarString->dwTotalSize=dwNeeded;
            lResult=::lineGetID(m_hline,0,NULL,
                LINECALLSELECT_LINE,
                lpVarString,"mci/midi");
            if(lResult)
            {
                ShowMessage(lResult);
                goto error;
            }
            if(lpVarString->dwNeededSize<=lpVarString->dwTotalSize)
                break;
            dwNeeded=lpVarString->dwNeededSize;
            free(lpVarString);
            lpVarString=NULL;
        }
        m_hmodem=*(LPHANDLE)(lpVarString+lpVarString->dwStringOffset);
        Edit5->Text=int(m_hmodem);
        error:
            if(lpVarString)
                free(lpVarString);
            return;
    }
    //---------------------------------------------------------------------------void __fastcall TForm1::Button6Click(TObject *Sender)
    {
        ::lineDrop(m_hcall,NULL,0);
        ::lineShutdown(m_htapi);    
    }
    //---------------------------------------------------------------------------