[C] Modification du temps d'un pc
ssebounet
Messages postés
162
Date d'inscription
Statut
Membre
Dernière intervention
-
SKZ -
SKZ -
Bonjour à tous!!
Je suis en train de rechercher comment modifier la date et l'heure d'un pc en executant un programe.
je suis sous window xp.
je souhaiterai modifier la date surtout. il faudrai que j'arrive a l'avancé de 2 jours à 10 jours. (après la reculer pour la remettre en place!)
enfin bon y-a-t-il une fonction en c qui permet de faire cela ou comment le faire???
Merci d'avance pour toutes reponses!!!
Séb
Je suis en train de rechercher comment modifier la date et l'heure d'un pc en executant un programe.
je suis sous window xp.
je souhaiterai modifier la date surtout. il faudrai que j'arrive a l'avancé de 2 jours à 10 jours. (après la reculer pour la remettre en place!)
enfin bon y-a-t-il une fonction en c qui permet de faire cela ou comment le faire???
Merci d'avance pour toutes reponses!!!
Séb
A voir également:
- [C] Modification du temps d'un pc
- Réinitialiser un pc - Guide
- Suivi de modification word - Guide
- Test performance pc - Guide
- Pc lent - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
6 réponses
Bonjour,
et voilà!
cordialement
#include <time.h> void reglage (int heure, int minute,int seconde,int jour ,int mois, int an) { struct time t; t.ti_hour=(char) heure; t.ti_min= (char) minute; t.ti_sec= (char) seconde; settime(&t); struct date today; today.da_day = (char) jour; today.da_mon =(char)mois; today.da_year =(char)an; setdate(&today); }
et voilà!
cordialement
salut.
à priori rien dans <ctime> ni sur la MSDN.
Mais tu peux utiliser la commande date du shell.
Je ne sais pas ce que tu veux faire, mais il est possible de changer la date d'un fichier en C.
à priori rien dans <ctime> ni sur la MSDN.
Mais tu peux utiliser la commande date du shell.
Je ne sais pas ce que tu veux faire, mais il est possible de changer la date d'un fichier en C.
merci beaucoup blurk je vais tester ca de suite et je vous tien au courant!!
sinon pour repondre a char snipeur je souhaite changer la date de l'ordinateur pas d un fichier!!
merci bien encore je vais tester ce program de suite!!!
seb
sinon pour repondre a char snipeur je souhaite changer la date de l'ordinateur pas d un fichier!!
merci bien encore je vais tester ce program de suite!!!
seb
voila j'ai tester ce que tu me disais!!
mais je ne sais pas pourquoi il me refusait struct time t et idem pour la date!!
j'ai donc reutiliser une parti de ce que tu as fait!!
void reglage(int hour,
int minute,
int second,
int day,
int month,
int year)
{
SYSTEMTIME systime;
systime.wYear = year;
systime.wMonth = month;
/* systime.wDayOfWeek = tm->tm_wday; not permit*/
systime.wDay = day;
systime.wHour = hour;
systime.wMinute = minute;
systime.wSecond = second;
systime.wMilliseconds = 00;
/* Set the time of the host */
SetLocalTime(&systime);
}
voila celui ci fonctionne c est sur!!
maintenant il faut juste apeler la date du jour et ajouter les valeurs a la date du jour!
en tout cas merci beaucoup pour votre rapidité de réponse!!!
seb
mais je ne sais pas pourquoi il me refusait struct time t et idem pour la date!!
j'ai donc reutiliser une parti de ce que tu as fait!!
void reglage(int hour,
int minute,
int second,
int day,
int month,
int year)
{
SYSTEMTIME systime;
systime.wYear = year;
systime.wMonth = month;
/* systime.wDayOfWeek = tm->tm_wday; not permit*/
systime.wDay = day;
systime.wHour = hour;
systime.wMinute = minute;
systime.wSecond = second;
systime.wMilliseconds = 00;
/* Set the time of the host */
SetLocalTime(&systime);
}
voila celui ci fonctionne c est sur!!
maintenant il faut juste apeler la date du jour et ajouter les valeurs a la date du jour!
en tout cas merci beaucoup pour votre rapidité de réponse!!!
seb
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
:-( et bien sur ça tourne pas sur Linux !
SYSTEMTIME n'est pas reconnu.
Desoler pour la reponse eroner, j'avais cru comprendre sur MSDN que SetLocalTime ne modifiait pas l'heure, du PC mais seulement celle du programme.
SYSTEMTIME n'est pas reconnu.
Desoler pour la reponse eroner, j'avais cru comprendre sur MSDN que SetLocalTime ne modifiait pas l'heure, du PC mais seulement celle du programme.
Sans les droits root, de toute façon, ça ne marchera pas...
Ce genre de manip est très dépendante du système.
Le mieux pour un prog qui se veux portable, est de créer un fonction spéciale qui le fait, et de la réécrire pour chaque système cible, et de faire une édition de lien conditionnée par le système cible (ex : un makefile.win et un autre makefile.linux...)
Ce genre de manip est très dépendante du système.
Le mieux pour un prog qui se veux portable, est de créer un fonction spéciale qui le fait, et de la réécrire pour chaque système cible, et de faire une édition de lien conditionnée par le système cible (ex : un makefile.win et un autre makefile.linux...)
en fait j ai encore mieux!!!
la il y avait un probleme avec les jours par exemple aujourd hui on est le 23 si je voulais ajouter 10 jours ca passait au 33!!!
probleme!
donc en fait j ai une parade:
void set_date_hour_minute( int day,
int hour,
int minute)
{
SYSTEMTIME systemTime1;
FILETIME fileTime1;
ULARGE_INTEGER uLargeIntegerTime1;
int result;
GetLocalTime( &systemTime1 );
/* Conversion from SYSTEMTIME structure to FILETIME structure */
result = SystemTimeToFileTime(&systemTime1, &fileTime1);
if (!result) printf("Conversion from SYSTEMTIME to FILETIME failed.");
/* Copies the FILETIME structure into the ULARGER_INTEGER structure; */
uLargeIntegerTime1.LowPart = fileTime1.dwLowDateTime;
uLargeIntegerTime1.HighPart = fileTime1.dwHighDateTime;
/* Modification of the ULARGER_INTEGER in days hours or minutes or several of them */
if (day)
uLargeIntegerTime1.QuadPart += (unsigned __int64) (1000*1000*10) /* seconds */
* (unsigned __int64) (60 * 60 * 24) /* days */
* (unsigned __int64) (day); /* # of days */
if (hour)
uLargeIntegerTime1.QuadPart += (unsigned __int64) (1000*1000*10) /* seconds */
* (unsigned __int64) (60 * 60) /* days */
* (unsigned __int64) (hour); /* # of days */
if (minute)
uLargeIntegerTime1.QuadPart += (unsigned __int64) (1000*1000*10) /* seconds */
* (unsigned __int64) (60) /* days */
* (unsigned __int64) (minute); /* # of days */
/* Converts back to FILETIME structure from ULARGE_INTEGER structure */
fileTime1.dwLowDateTime = uLargeIntegerTime1.LowPart;
fileTime1.dwHighDateTime = uLargeIntegerTime1.HighPart;
/* Coverts back to SYSTEMTIME structure from FILETIME structure */
result = FileTimeToSystemTime( &fileTime1, &systemTime1);
if (!result) printf("Conversion from FILETIME to SYSTEMTIME failed.");
/* Set the time of the host */
SetLocalTime(&systemTime1);
}
et voila celui la est niquel!!! j'en suis assez content!!
sinon comment pourrais-je faire pour que cela fonctionne aussi sous linux???
y a t il un moyen de le faire aussi???
Séb
la il y avait un probleme avec les jours par exemple aujourd hui on est le 23 si je voulais ajouter 10 jours ca passait au 33!!!
probleme!
donc en fait j ai une parade:
void set_date_hour_minute( int day,
int hour,
int minute)
{
SYSTEMTIME systemTime1;
FILETIME fileTime1;
ULARGE_INTEGER uLargeIntegerTime1;
int result;
GetLocalTime( &systemTime1 );
/* Conversion from SYSTEMTIME structure to FILETIME structure */
result = SystemTimeToFileTime(&systemTime1, &fileTime1);
if (!result) printf("Conversion from SYSTEMTIME to FILETIME failed.");
/* Copies the FILETIME structure into the ULARGER_INTEGER structure; */
uLargeIntegerTime1.LowPart = fileTime1.dwLowDateTime;
uLargeIntegerTime1.HighPart = fileTime1.dwHighDateTime;
/* Modification of the ULARGER_INTEGER in days hours or minutes or several of them */
if (day)
uLargeIntegerTime1.QuadPart += (unsigned __int64) (1000*1000*10) /* seconds */
* (unsigned __int64) (60 * 60 * 24) /* days */
* (unsigned __int64) (day); /* # of days */
if (hour)
uLargeIntegerTime1.QuadPart += (unsigned __int64) (1000*1000*10) /* seconds */
* (unsigned __int64) (60 * 60) /* days */
* (unsigned __int64) (hour); /* # of days */
if (minute)
uLargeIntegerTime1.QuadPart += (unsigned __int64) (1000*1000*10) /* seconds */
* (unsigned __int64) (60) /* days */
* (unsigned __int64) (minute); /* # of days */
/* Converts back to FILETIME structure from ULARGE_INTEGER structure */
fileTime1.dwLowDateTime = uLargeIntegerTime1.LowPart;
fileTime1.dwHighDateTime = uLargeIntegerTime1.HighPart;
/* Coverts back to SYSTEMTIME structure from FILETIME structure */
result = FileTimeToSystemTime( &fileTime1, &systemTime1);
if (!result) printf("Conversion from FILETIME to SYSTEMTIME failed.");
/* Set the time of the host */
SetLocalTime(&systemTime1);
}
et voila celui la est niquel!!! j'en suis assez content!!
sinon comment pourrais-je faire pour que cela fonctionne aussi sous linux???
y a t il un moyen de le faire aussi???
Séb