Erreur ds un source !

Résolu
Signaler
Messages postés
3
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
16 avril 2008
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
code erreur 424  dans
(form load
With Winsock

       

 .Close)



le source ci dessous


Dim sNTP         As String  'trame 32 bits retournée par le serveur SNTP
Dim sngTimeDelay As Single  'temps écoulé entre la connection au serveur
                            'et les données recues.
                            'la correction à apporter est égale
                            'à la moitié de cette valeur

Private Declare Function SetSystemTime Lib "kernel32" _
     (lpSystemTime As SYSTEMTIME) As Long
    
Private Type SYSTEMTIME
    wYear        As Integer
    wMonth      As Integer
    wDayOfWeek  As Integer
    wDay            As Integer
    wHour        As Integer
    wMinute      As Integer
    wSecond      As Integer
    wMilliseconds As Integer
End Type

Sub Form_load()
    Me.Hide
    With Winsock
        .Close
        sNTP = Empty
        '
        ' Nom du serveur de temps NTP.
        ' L'heure suisse même atomique c'est autre chose !
        .RemoteHost = "ntp.metas.ch"
        '
        ' Connection sur le port dédié 37. (RFC 1305, 1361, 2030)
        '
        .RemotePort = 37
        .Connect
    End With
End Sub

Private Sub WinSock_DataArrival(ByVal bytesTotal As Long)
     Dim sData As String

     Call Winsock.GetData(sData, vbString)
     sNTP = sNTP & sData
End Sub
Private Sub WinSock_Connect()
    sngTimeDelay = Timer 'temps écoulé depuis minuit
End Sub
Private Sub WinSock_Close() 'le serveur ferme la connection
     On Error Resume Next

     Do Until Winsock.State = sckClosed
        Winsock.Close
        DoEvents
     Loop

    
sngTimeDelay = ((Timer - sngTimeDelay) / 2) 'correction en secondes à
apporter entre la connection et la fermeture de connection
     Call SyncClock(sNTP)
End Sub
Private Sub SyncClock(sTemp As String)
     Dim dblNTPTime     As Double   ' réponse temps en secondes écoulées depuis 1900
     Dim UTCDATE         As Date
     Dim LngTimeFrom1990 As Long
     Dim ST             As SYSTEMTIME
    
     sTemp = Trim$(sTemp) ' élimine les espaces à droite et gauche
     If Len(sTemp) <> 4 Then    ' vérifie la longueur de la chaine de retour 4 caractères
        Call MsgBox("le serveur NTP retourne une réponse invalide.", _
                vbCritical, "Réponse invalide")
        Exit Sub
     End If

     ' décodage de la chaine de 4 caractères ACII retournées
     dblNTPTime = Asc(Left$(sTemp, 1)) * 256 ^ 3 + Asc(Mid$(sTemp, 2, 1)) * 256 ^ 2 + _
     Asc(Mid$(sTemp, 3, 1)) * 256 ^ 1 + Asc(Right$(sTemp, 1))
        
     LngTimeFrom1990 = dblNTPTime - 2840140800# 'temps en secondes depuis 1990
    
     ' correction de la date introduite au système
     UTCDATE = DateAdd("s", CDbl(LngTimeFrom1990 + CLng(sngTimeDelay)), #1/1/1990#)

     With ST
        .wYear = Year(UTCDATE)
        .wMonth = Month(UTCDATE)
        .wDay = Day(UTCDATE)
        .wHour = Hour(UTCDATE)
        .wMinute = Minute(UTCDATE)
        .wSecond = Second(UTCDATE)
     End With

     Call SetSystemTime(ST)
     Call MsgBox("Horloge PC synchronisée avec succés.", vbInformation, _
     "Mise à l'heure réussie")

End Sub

1 réponse

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,BONJOUR, BUENOS DIAS? HELLO .... BON DIA....





Faudrait peu être mettre un Objet Winsock Appelé Winsock sur ton formualire sinon ca marchera
@+: Ju£i?n
Pensez: Réponse acceptée