VB程序如何实现拨打电话?

时间:2022-11-10 10:33:02
我记的以前可以通过MODEM用程序发送命令码实现拨打电话,只是忘了命令的格式,还请各位高手指教一二。

17 个解决方案

#1


用MsCommon控件!到MSDN查一下吧,我也忘了,呵呵...不过不难的!*^_^*

#2


直接用Open语句打开Com好像就可以了。

你也可以参照一下这个:
http://www.vb-helper.com/HowTo/howto_dial_modem.zip

#3


打开串口,发送atdt命令

#4


可不可以给出完整的代码啊,包括拨出与挂断

#5


Option Explicit

Private Declare Function tapiRequestMakeCall& Lib "TAPI32.DLL" (ByVal DestAddress$, ByVal AppName$, ByVal CalledParty$, ByVal Comment$)
Private Const TAPIERR_NOREQUESTRECIPIENT = -2&
Private Const TAPIERR_REQUESTQUEUEFULL = -3&
Private Const TAPIERR_INVALDESTADDRESS = -4&

Private Sub Form_Load()
    EnableDial
End Sub

Private Sub txtNumber_Change()
    EnableDial
End Sub

Private Sub cmdDial_Click()
    Dim buff As String
    Dim nResult As Long

    'Invoke tapiRequestMakeCall. If tapiRequestMakeCall returns 0, the
    'request has been accepted. It is up to the call manager application
    'to do any further work. The second-to-last argument should be
    'changed to be the name of the person you are dialing.
    nResult = tapiRequestMakeCall&(Trim$(txtNumber), CStr(Caption), "Test Dial", "")
    'Display message if error
    If nResult <> 0 Then
        buff = "Error dialing number : "
        Select Case nResult
            Case TAPIERR_NOREQUESTRECIPIENT
                buff = buff & "No Windows Telephony dialing application is running and none could be started."
            Case TAPIERR_REQUESTQUEUEFULL
                buff = buff & "The queue of pending Windows Telephony dialing requests is full."
            Case TAPIERR_INVALDESTADDRESS
                buff = buff & "The phone number is not valid."
            Case Else
                buff = buff & "Unknown error."
        End Select
        MsgBox buff
    End If
End Sub

Private Sub cmdExit_Click()
    Unload Me
End Sub

Private Sub EnableDial()
    cmdDial.Enabled = Len(Trim$(txtNumber)) > 0
End Sub

#6


我觉得很奇怪,我不是已经贴出例程源码的URL了,怎么唾手可得的都懒得去看啊?!!非要贴在这里!!???

#7


#8


#9


http://www.codesky.net/show.asp?id=1015

#10


Repeat:
直接用Open语句打开Com好像就可以了。

你也可以参照一下这个:
http://www.vb-helper.com/HowTo/howto_dial_modem.zip

#11


用mscomm控件。
接入电话线打开modem串开用AT指令即可。

#12


Option Explicit
Private Declare Function tapiRequestMakeCall& Lib "TAPI32.DLL" (ByVal DestAddress$, ByVal AppName$, ByVal CalledParty$, ByVal Comment$)
Public Sub Dial(Number As String, Name As String)
Dim lRES As Long
If Trim(Number) = "" Then
  Exit Sub
End If
If MsgBox("About to call" & Trim(Name) & "at phone number" & Trim(Number) & vbCrLf & "Do it?") - vbYesNo = vbYes Then
   lRES = tapiRequestMakeCall(Trim(Number), App.Title, Trim(Name), "")
   Debug.Print Now; "Call->tapiRequestMakeCall Result code="; lRES; ""
End Sub

#13


学习

#14


用API函数tapiRequestMakeCall拨打电话的时候会弹出一个对话框,而我需要在拨打电话的时候如果正常的话不给出任何提示。并且我的程序是让用户自己选择MODEM的(考虑到有可能会出现两张MODEM),不知道如何实现?

#15


http://www.vb-helper.com/HowTo/howto_dial_modem.zip我很早已经下载过了,但是我一拨打就出现蓝屏,然后死机。我自己用ATDT命令测试也是如此,不知道是什么原因,但是WINDOWS内置的电话拨打程序可以拨打却会弹出一个对话框,在应用软件中这个对话框我不需要。望高手门不吝赐教!特别是写过该程序的同志们!

#16


俺的代码是这样的噢:
MSCOMM1.COMMPORT=3
MSCOMM1.PORTOPEN=TRUE
IF MSCOMM1.PORTOPEN=TRUE THEN
 MSCOMM1.OUTPUT ="ATDT " & "1300379" & VBCR
 'MSCOMM1.OUTPUT ="ATDT " & "1300379;" & VBCR
 'MSCOMM1.OUTPUT ="ATDT" & "1300379;" & VBCR
END IF
一拨打就蓝屏,我苦噢,我是在笔记本上试的,应该没关系的吧?

#17


Open "Com1"方法行不行呢?

#1


用MsCommon控件!到MSDN查一下吧,我也忘了,呵呵...不过不难的!*^_^*

#2


直接用Open语句打开Com好像就可以了。

你也可以参照一下这个:
http://www.vb-helper.com/HowTo/howto_dial_modem.zip

#3


打开串口,发送atdt命令

#4


可不可以给出完整的代码啊,包括拨出与挂断

#5


Option Explicit

Private Declare Function tapiRequestMakeCall& Lib "TAPI32.DLL" (ByVal DestAddress$, ByVal AppName$, ByVal CalledParty$, ByVal Comment$)
Private Const TAPIERR_NOREQUESTRECIPIENT = -2&
Private Const TAPIERR_REQUESTQUEUEFULL = -3&
Private Const TAPIERR_INVALDESTADDRESS = -4&

Private Sub Form_Load()
    EnableDial
End Sub

Private Sub txtNumber_Change()
    EnableDial
End Sub

Private Sub cmdDial_Click()
    Dim buff As String
    Dim nResult As Long

    'Invoke tapiRequestMakeCall. If tapiRequestMakeCall returns 0, the
    'request has been accepted. It is up to the call manager application
    'to do any further work. The second-to-last argument should be
    'changed to be the name of the person you are dialing.
    nResult = tapiRequestMakeCall&(Trim$(txtNumber), CStr(Caption), "Test Dial", "")
    'Display message if error
    If nResult <> 0 Then
        buff = "Error dialing number : "
        Select Case nResult
            Case TAPIERR_NOREQUESTRECIPIENT
                buff = buff & "No Windows Telephony dialing application is running and none could be started."
            Case TAPIERR_REQUESTQUEUEFULL
                buff = buff & "The queue of pending Windows Telephony dialing requests is full."
            Case TAPIERR_INVALDESTADDRESS
                buff = buff & "The phone number is not valid."
            Case Else
                buff = buff & "Unknown error."
        End Select
        MsgBox buff
    End If
End Sub

Private Sub cmdExit_Click()
    Unload Me
End Sub

Private Sub EnableDial()
    cmdDial.Enabled = Len(Trim$(txtNumber)) > 0
End Sub

#6


我觉得很奇怪,我不是已经贴出例程源码的URL了,怎么唾手可得的都懒得去看啊?!!非要贴在这里!!???

#7


#8


#9


http://www.codesky.net/show.asp?id=1015

#10


Repeat:
直接用Open语句打开Com好像就可以了。

你也可以参照一下这个:
http://www.vb-helper.com/HowTo/howto_dial_modem.zip

#11


用mscomm控件。
接入电话线打开modem串开用AT指令即可。

#12


Option Explicit
Private Declare Function tapiRequestMakeCall& Lib "TAPI32.DLL" (ByVal DestAddress$, ByVal AppName$, ByVal CalledParty$, ByVal Comment$)
Public Sub Dial(Number As String, Name As String)
Dim lRES As Long
If Trim(Number) = "" Then
  Exit Sub
End If
If MsgBox("About to call" & Trim(Name) & "at phone number" & Trim(Number) & vbCrLf & "Do it?") - vbYesNo = vbYes Then
   lRES = tapiRequestMakeCall(Trim(Number), App.Title, Trim(Name), "")
   Debug.Print Now; "Call->tapiRequestMakeCall Result code="; lRES; ""
End Sub

#13


学习

#14


用API函数tapiRequestMakeCall拨打电话的时候会弹出一个对话框,而我需要在拨打电话的时候如果正常的话不给出任何提示。并且我的程序是让用户自己选择MODEM的(考虑到有可能会出现两张MODEM),不知道如何实现?

#15


http://www.vb-helper.com/HowTo/howto_dial_modem.zip我很早已经下载过了,但是我一拨打就出现蓝屏,然后死机。我自己用ATDT命令测试也是如此,不知道是什么原因,但是WINDOWS内置的电话拨打程序可以拨打却会弹出一个对话框,在应用软件中这个对话框我不需要。望高手门不吝赐教!特别是写过该程序的同志们!

#16


俺的代码是这样的噢:
MSCOMM1.COMMPORT=3
MSCOMM1.PORTOPEN=TRUE
IF MSCOMM1.PORTOPEN=TRUE THEN
 MSCOMM1.OUTPUT ="ATDT " & "1300379" & VBCR
 'MSCOMM1.OUTPUT ="ATDT " & "1300379;" & VBCR
 'MSCOMM1.OUTPUT ="ATDT" & "1300379;" & VBCR
END IF
一拨打就蓝屏,我苦噢,我是在笔记本上试的,应该没关系的吧?

#17


Open "Com1"方法行不行呢?