Synchronisation heure

cs_pattenrond Messages postés 10 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 28 août 2005 - 26 août 2005 à 12:56
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 28 août 2005 à 22:18
Bonjour à tous,



Je recherche le moyen de synchroniser l'heure d'un PC avec l'heure obtenu via un serveur NTP.



J'ai déjà trouver la déclaration suivante :



Declare Function GetSystemTimeAdjustment Lib "kernel32" (ByRef
lpTimeAdjustment As Integer, ByRef lpTimeIncrement As Integer, ByRef
lpTimeAdjustmentDisabled As Boolean) As Integer



mais je ne sais pas l'utiliser



Est ce que l'un(e) d'entre vous à une idée



Amicalement


-------------------------------------
Nono

9 réponses

cs_pattenrond Messages postés 10 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 28 août 2005
26 août 2005 à 14:05
Re,

je viens de trouver quelque chose de plus facile à manier :

net time /setsntp:serveur_ntp

Je vais tester et je vous tiens informé


-------------------------------------
Nno
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 août 2005 à 14:18
l'idée est là, mais c'est pas tout à fait çà....

Private Type NTP_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

Public Declare Function SetSystemTime Lib "kernel32" (lpSystemTime As NTP_SYSTEMTIME) As Long

PCPT
0
cs_pattenrond Messages postés 10 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 28 août 2005
28 août 2005 à 14:09
Salut,



je viens de tester mais je dois être complétement c.n, ça ne met rien à jours.



J'uilise ASOCKETLib avec ce code :



Dim objNtp As ASOCKETLib.NtpClass

objNtp = New ASOCKETLib.Ntp



Dim heure As String

Dim minute As String

Dim NTPChange As NTP_SYSTEMTIME



objNtp.Clear()

objNtp.GetTime("fr.pool.ntp.org")

If (objNtp.LastError = 0) Then

'heure : GMT + 2

heure = objNtp.Hour + 2

If heure 24 Then heure 0

Minute = objNtp.Minute

' Juste une msgbox pour le teste, c'est temporaire

MsgBox(heure & " : " & Minute)

End If



Comment je fais pour faire travailler ton code avec le code ci dessus ?



@+
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 août 2005 à 15:41
tu fais une variable NTP_NewTime as NTP_SYSTEMTIME, que tu initialises aux valeurs trouvées :
NTP_SYSTEMTIME.wYear = blabla pour toutes les valeurs dont tu as besoin (donc wDayOfWeek et wMilliseconds, non) et Call SetSystemTime(NTP_SYSTEMTIME)

PCPT
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 août 2005 à 15:43
**remplace NTP_SYSTEMTIME par NTP_NewTime (woups)
0
cs_pattenrond Messages postés 10 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 28 août 2005
28 août 2005 à 21:19
Je viens d'implémentre le code mais maintenant il me m'est ce message d'erreur :



Une exception non gérée du type 'System.NullReferenceException' s'est produite dans WindowsApplication1.exe



Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet.



voici le code :



Imports ASOCKETLib

Public Class Form1

Inherits System.Windows.Forms.Form



#Region " Code généré par le Concepteur Windows Form "



Public Sub New()

MyBase.New()



'Cet appel est requis par le Concepteur Windows Form.

InitializeComponent()



'Ajoutez une initialisation quelconque après l'appel InitializeComponent()



End Sub



'La méthode substituée Dispose du formulaire pour nettoyer la liste des composants.

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

If disposing Then

If Not (components Is Nothing) Then

components.Dispose()

End If

End If

MyBase.Dispose(disposing)

End Sub



'Requis par le Concepteur Windows Form

Private components As System.ComponentModel.IContainer



'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form

'Elle peut être modifiée en utilisant le Concepteur Windows Form.

'Ne la modifiez pas en utilisant l'éditeur de code.

Friend WithEvents Button1 As System.Windows.Forms.Button

<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

Me.Button1 = New System.Windows.Forms.Button

Me.SuspendLayout()

'

'Button1

'

Me.Button1.Location = New System.Drawing.Point(96, 80)

Me.Button1.Name = "Button1"

Me.Button1.Size = New System.Drawing.Size(88, 56)

Me.Button1.TabIndex = 0

Me.Button1.Text = "Button1"

'

'Form1

'

Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

Me.ClientSize = New System.Drawing.Size(292, 266)

Me.Controls.Add(Me.Button1)

Me.Name = "Form1"

Me.Text = "Form1"

Me.ResumeLayout(False)



End Sub



#End Region





Declare Function SetSystemTime Lib "kernel32" (ByVal lpSystemTime As NTP_SYSTEMTIME) As Long

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim objNtp As ASOCKETLib.NtpClass

objNtp = New ASOCKETLib.Ntp

Dim heure As String

Dim minute As String

Dim NTP_NewTime As NTP_SYSTEMTIME

objNtp.Clear()

objNtp.GetTime("fr.pool.ntp.org")

If objNtp.LastError = 0 Then

NTP_NewTime.wHour = objNtp.Hour

NTP_NewTime.wMinute = objNtp.Minute

NTP_NewTime.wSecond = objNtp.Second

Call SetSystemTime(NTP_NewTime)

End If

End Sub

Public Structure NTP_SYSTEMTIME

Dim wYear As Integer

Dim wMonth As Integer

Dim wDayOfWeek As Integer

Dim wDay As Integer

Dim wHour As Integer

Dim wMinute As Integer

Dim wSecond As Integer

Dim wMilliseconds As Integer

End Structure

End Class



@+



Nono
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 août 2005 à 21:31
arf, il fallait préciser, désolé.
mon code est pour VB6, pas .NET. essai de voir comment convertir, mais il fonctionne, pour cause d'avoir fait une petite appli avec ce code.

PCPT
0
cs_pattenrond Messages postés 10 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 28 août 2005
28 août 2005 à 22:04
Re,



j'ai mis un try catch pour voir si c'est Call
SetSystemTime(NTP_NewTime) qui flanche et c'est belle est bien ça. Je
repart en chasse je vais essayer de trouver en .net, encore merci de
ton aide
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 août 2005 à 22:18
bon courage. désolé

Guid-API (exemple complet VB6) :

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
Private Declare Function SetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) As Long
'_________________________________________________________
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim lpSystemTime As SYSTEMTIME
lpSystemTime.wYear = 2000
lpSystemTime.wMonth = 1
lpSystemTime.wDayOfWeek = -1
lpSystemTime.wDay = 24
lpSystemTime.wHour = 23
lpSystemTime.wMinute = 26
lpSystemTime.wSecond = 0
lpSystemTime.wMilliseconds = 0
'set the new time
SetSystemTime lpSystemTime
End Sub

PCPT
0
Rejoignez-nous