VB6 - Comment modifier l'heure de windows svp?

Résolu
Signaler
Messages postés
16
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
5 juin 2006
-
Messages postés
16
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
5 juin 2006
-
Bonjour, je travail présentement sur un projet en VB6 qui aurait pour but de modifier l'heure de windows [celle en bas à droite] selon l'heure d'un autre ordinateur.

Pour se faire j'avais penser faire un programme qui, avec winsock, lierait deux programmes, un sur le serveur qui possèderait l'heure de l'ordinateur dans un label et un autre qui recevrait cette heure et mettrait à jour l'heure de windows pour celle-ci.

Alors ma question est, une fois le contenu du label reçu, comment puis-je modifier l'heure du windows pour celui reçu par le programme?

Merci d'avance.
PS: Si vous avez des suggestions plus efficaces pour mon projet, n'hésitez pas :)

13 réponses

Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
1
Hello,

il faut utiliser une bonne vieille API :


Private Declare Function SetLocalTime Lib "kernel32" (ByRef lpSystemTime As SYSTEMTIME) As Integer



Private
Structure SYSTEMTIME

Dim wYear
As
Short
Dim wMonth
As
Short
Dim wDayOfWeek
As
Short
Dim wDay
As
Short
Dim wHour
As
Short
Dim wMinute
As
Short
Dim wSecond
As
Short
Dim wMilliseconds
As
Short
End
Structure


Dans une fonction :

Dim ST
As SYSTEMTIME


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

End
With


Call SetLocalTime(ST)




Et voilà ! Je pense que c'est clair, l'API reçoit en parametre une structure contenant toutes les infos.
Il existe une autre API du même type mais qui reçoit l'heure GMT et tient compte du décallage horaire de la zone déclarée dans windows (je ne me souviens plus le nom de l'API).

Seb.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
plus simple:



Time$ = "18:40:00"

Date$ = "18/08/2005"

Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Violent Ken

salut !


C'est en effet plus simple, mais pour la date, c'est plutôt Date$ = "08-18-2005", parce que sinon cà bug !
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
16
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
5 juin 2006

Un gros merci à tout le monde, ça a L'AIR (moui pcq selon mon expérience faut jamais se fier aux apparences :)) de marcher parfaitement, alors merci encore tous !! :)
Messages postés
16
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
5 juin 2006

Erf, mon problème est maintenant de convertir les heures du style 09:10:00 PM en 21:10:00 sans toucher aux paramètres régionaux :S
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
Dim dt As Date

dt = "09:10:00 PM"

MsgBox dt


Daniel
Messages postés
16
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
5 juin 2006

Hmm, je veux avoir le format sans AM/PM lol... J'ai réussi en jouant avec format(dateActuelle, "h:m:s") en string mais lorsque je viens pour le mettre dans time$ il plante, disant que les valeurs ne sont pas adéquates
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
ben tu l'as ta date sans AM/PM



Dim dt1 As Date

Dim dt2 As Date

Dim s As String



s = "09:10:00" & " PM"

dt1 = s

dt2 = "21:10:00"

If dt1 = dt2 Then MsgBox "oui"

s = dt1

MsgBox s


Daniel
Messages postés
16
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
5 juin 2006

Mais comment je peux faire pour que ça soit toujours ainsi?


Je m'explique, la j'ai mon serveur qui envoi des informations à mon client. Ces informations sont en fait:


Dim dateActuelle as date


dateActuelle = now


winsock1.sendData = dateActuelle

Alors la dateActuelle de l'ordinateur est donc envoyé à un autre ordinateur opérant le programme client. Maintenant, le but du programme est de faire que ce client voit la date et l'heure de son ordinateur mis à jour afin d'avoir les mêmes que celui du serveur. Mais pour ça, je dois couper mon dateActuelle en heure et jour afin de pouvoir utiliser le $time and $date. Mais les méthodes que j'utilise me donnent toujours que le type de données est incompatible alors, comment dois-je m'y prendre?

Merci d'avance
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
et c'est quoi cette histoire d' AM/PM







Dim Ladate As String

Dim letemps As String

Dim dateActuelle As Date

dateActuelle = Now



Ladate = Format$(dateActuelle, "mm-dd-yyyy")

letemps = Format$(dateActuelle, "Long Time")

MsgBox "la date seule: " & Ladate

MsgBox "l'heure seule: " & letemps



Date$ = Ladate

Time$ = Letemps

Daniel
Messages postés
16
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
5 juin 2006

Erf, marche toujours pas... Le truc de AM/PM c'est à cause des paramètres régionaux... Et ça je dois programmer avec :S

Mais il persiste avec le fait que "Type-declaration character does not match declared data type" :(
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
j'ai pas cette erreur

il fait ça sur quelle Ligne ?



Dim Ladate As String


Dim letemps As String


Dim dateActuelle As Date





' tout dépend comment arrive la date ????

dateActuelle = Now


' "18/08/2005 21:35:00"

' ou

' "18/08/2005 09:35:00 PM"




Ladate = Format$(dateActuelle, "MM-DD-YYYY")


' et comment la mettre en sortie


' soit en format 24h

letemps = Format$(dateActuelle, "HH:NN:SS")

' ou en format 12h

letemps = Format$(dateActuelle, "HH:NN:SS AM/PM")





MsgBox "la date: " & Ladate


MsgBox "l'heure: " & letemps


Daniel
Messages postés
16
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
5 juin 2006

Arf, finalement je crois que l'erreur était inexistante puisque j'ai fais un nouveau projet avec le même code et tout marchait nickel :\

Merci tous