Ce début de dll permet d'appeler et de raccrocher le tel via le modem, il utilise le composant Mscomm de VB.
Mode opératoire pour utiliser ClPhone.dll
Tout d'abord, il faut référencer la dll dans le projet.
Puis il faut créer une variable permettant de d'instancier l'objet ClPhone
Liste des propriétés
oPbStandard : Propriété qui permet de renseigner si la ligne se trouve derrière un standard. Dans ce cas là, on rajoutera 0 devant le numéro de téléphone.
oPsPortSetting : Propriété concernant la configuration du port série (Vitesse, Bits de parité,Bit de Données Valide, valeur d'arrêt)
oPiPortNumber : Propriété concernant le numéro du port (Ex : 1 = COM1 , 2 = COM2 etc..)
oPsPhoneNumber : Propriété qui concerne le numéro de téléphone qu'on veut appeler. (Ex: 0328333543)
oPbHangDown : Propriété qui permet de raccrocher et de terminer l'appel.
Méthode pour faire un appel :
RbCallNumber : Méthode qui permet de faire un appel selon les propriété que l'on définira au préalable.
Pour raccrocher, il suffira de mettre la propriété oPbHangDownà vrai.
Source / Exemple :
Option Explicit
Dim sOpsPortSetting As String 'Propriété du Port
Dim sOpsPhoneNumber As String 'Numéro de téléphone à appeler
Dim bOpbStandard As Boolean 'Flag pour savoir si la ligne est derrière un standard
Dim boPbHangDown As Boolean 'Flag qui raccroche le tel
Dim iOpiPortNumber As Integer 'Numéro du port
Dim oCom As MSComm 'Objet de communication Port
Dim WithEvents oVoice As SpVoice
'Propriété qui Rend la fenêtre de conncetion visible ou non
Public Property Let oPbVisible(bVisible As Boolean)
Frm_TestModem.Visible = bVisible
If bVisible Then
Frm_TestModem.WindowState = vbNormal
End If
End Property
Public Property Get oPbVisible() As Boolean
oPbVisible = Frm_TestModem.Visible
End Property
'Propriété qui renseigne si la ligne se trouve derrière un standard ou non
Public Property Let oPbStandard(bStandard As Boolean)
bOpbStandard = bStandard
End Property
Public Property Get oPbStandard() As Boolean
oPbStandard = bOpbStandard
End Property
'Propriété qui fais racrocher le telephone
Public Property Let oPbHangDown(bHangDown As Boolean)
boPbHangDown = bHangDown
'If bHangDown And oCom.PortOpen Then oCom.PortOpen = False
End Property
Public Property Get oPbHangDown() As Boolean
oPbHangDown = boPbHangDown
End Property
'Propriété de configuration du port
Public Property Let oPsPortSetting(strPortSetting As String)
sOpsPortSetting = strPortSetting
End Property
Public Property Get oPsPortSetting() As String
oPsPortSetting = sOpsPortSetting
End Property
'Propriété qui définit le numéro de telephone à appeler
Public Property Let oPsPhoneNumber(strPhoneNumber As String)
If oPbStandard Then
sOpsPhoneNumber = "0" & strPhoneNumber
Else
sOpsPhoneNumber = strPhoneNumber
End If
End Property
Public Property Get oPsPhoneNumber() As String
oPsPhoneNumber = sOpsPhoneNumber
End Property
'Propriété qui définit le numéro du port série
Public Property Let oPiPortNumber(iPortNumber As Integer)
If iPortNumber = 0 Then
iOpiPortNumber = 1
Else
iOpiPortNumber = iPortNumber
End If
End Property
Public Property Get oPiPortNumber() As Integer
If oPiPortNumber = 0 Then
oPiPortNumber = 1
Else
oPiPortNumber = iOpiPortNumber
End If
End Property
Public Property Let oPlColorError(oColorError As OLE_COLOR)
oColor_Bad = CLng(oColorError)
End Property
Public Property Get oPlColorError() As OLE_COLOR
oPlColorError = oColor_Bad
End Property
Public Property Let oPlColorSucceed(oColorSucceed As OLE_COLOR)
oColor_Good = CLng(oColorSucceed)
End Property
Public Property Get oPlColorSucceed() As OLE_COLOR
oPlColorSucceed = oColor_Good
End Property
Public Function RbCallNumber() As Boolean
Dim st As String
Dim Cde As String
Dim boPbHangDown As Boolean
Dim modem As String
Dim oCom1 As Object
Frm_TestModem.Visible = False
' Définition des paramètres du port
Set oCom = Frm_TestModem.MSComm1
If Not oCom.PortOpen Then
oCom.CommPort = iOpiPortNumber 'Numéro du port série
oCom.Settings = sOpsPortSetting '"300,N,8,1"
End If
' Ouverture du port
On Error Resume Next
oCom.PortOpen = True
If Err Then
st = "COM" + Str(oCom.CommPort) + " n'est pas disponible. "
st = st + "Utilisez le menu Port pour sélectionner un autre port de communication."
MsgBox st
RbCallNumber = False
End If
' Purge du tampon d'entrée
oCom.InBufferCount = 0
' Composition du numéro
Cde = "ATDT " + sOpsPhoneNumber + ";" + Chr$(13)
oCom.Output = Cde
' Attente de la chaîne boPbHangDown en provenance du modem
boPbHangDown = False
Do
' Si il y a des données dans la tampon, les lit.
If oCom.InBufferCount Then
DoEvents
modem = modem + oCom.Input
' If InStr(modem, "OK") <> 0 Then
' MsgBox "Décrochez le téléphone et appuyez sur le bouton Ok."
' DoEvents
' 'oPbHangDown = True
' End If
End If
DoEvents
Loop Until oPbHangDown
' Déconnection du modem
oCom.Output = "ATH" + Chr$(13)
' Fermeture du port
oCom.PortOpen = False
End Function
Private Sub Class_Initialize()
oColor_Good = &H0
oColor_Bad = &H808080
bOpbStandard = True
sOpsPortSetting = "300,N,8,1"
sOpsPhoneNumber = ""
iOpiPortNumber = 1
Set oVoice = New SpVoice
End Sub
Private Sub Class_Terminate()
On Error Resume Next
' Fermeture du port
oCom.PortOpen = False
Set oVoice = Nothing
Set oCom = Nothing
End Sub
'*** Méthode
' ***********************************************************
' FONCTION: DialNumber()
'
' Explication : Composer un numéro de tel en utilisant le modem du PC
'
' Paramètre:
' PhoneNumber: Numéro de tel à composer
'
' ***********************************************************
Public Function DialNumber(PhoneNumber)
Dim Msg As String, MsgBoxType As Integer, MsgBoxTitle As String
Dim RetVal As Long
' Demande à l'utilisateur de décrocher le téléphone.
Msg = "SVP, décrocher le combiner et cliquer OK pour composer le numéro " _
& PhoneNumber
MsgBoxType = MB_ICONINFORMATION + MB_OKCANCEL
MsgBoxTitle = "Numéro de Tel"
If MsgBox(Msg, MsgBoxType, MsgBoxTitle) = ID_CANCEL Then
Exit Function
End If
' Envoyer le numéro de tel par modem.
RetVal = tapiRequestMakeCall(PhoneNumber, "Phone", "", "")
If RetVal < 0 Then
Msg = "Impossible de composer le numéro " & PhoneNumber
GoTo Err_DialNumber
End If
Exit Function
Err_DialNumber:
Msg = Msg & vbCr & vbCr & _
"Vérifiez que le Port série n'est pas utilisé par un autre utilisateur"
MsgBoxType = MB_ICONSTOP
MsgBoxTitle = "Erreur lors de la composition du numéro"
MsgBox Msg, MsgBoxType, MsgBoxTitle
End Function
Public Sub sbTextToSpeech(strMessage As String)
On Error GoTo ErrSpeech
'Declarations
'
''Code:
'oVoice.Speak strMessage, SVSFlagsAsync
'
''This will speak to default out put audio device (speaker)
''In case you want to direct the speech to telephone
''Add a MSCom control to your project
''Dial a telephone number
''Once picked up on other side [You need to know AT commands]
''set the oVoice output to telephone object and play the stream
'
oVoice.AllowAudioOutputFormatChangesOnNextSet = False
oVoice.AudioOutputStream.Format.Type = 6
Set oVoice.AudioOutputStream = oVoice.AudioOutputStream
Set oVoice.Voice = oVoice.GetVoices().Item(0)
Set oVoice.AudioOutput = oVoice.GetAudioOutputs().Item(1) '"Your telephone object"
Debug.Print oVoice.AudioOutput.GetDescription
oVoice.Speak strMessage, SVSFlagsAsync Or SVSFPurgeBeforeSpeak Or SVSFIsXML ' SVSFDefault ' Flags
Exit Sub
ErrSpeech:
MsgBox Err.Description
End Sub
Conclusion :
Il est en cours de conception. Je dois l'améliorer.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.