Je suis en train de mettre à jour mon temps de système en utilisant les éléments suivants:Comment mettre à jour la date du système et/ou du temps en utilisant .NET
[StructLayout(LayoutKind.Sequential)]
private struct SYSTEMTIME
{
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek;
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
}
[DllImport("kernel32.dll", EntryPoint = "GetSystemTime", SetLastError = true)]
private extern static void Win32GetSystemTime(ref SYSTEMTIME lpSystemTime);
[DllImport("kernel32.dll", EntryPoint = "SetSystemTime", SetLastError = true)]
private extern static bool Win32SetSystemTime(ref SYSTEMTIME lpSystemTime);
public void SetTime()
{
TimeSystem correctTime = new TimeSystem();
DateTime sysTime = correctTime.GetSystemTime();
// Call the native GetSystemTime method
// with the defined structure.
SYSTEMTIME systime = new SYSTEMTIME();
Win32GetSystemTime(ref systime);
// Set the system clock ahead one hour.
systime.wYear = (ushort)sysTime.Year;
systime.wMonth = (ushort)sysTime.Month;
systime.wDayOfWeek = (ushort)sysTime.DayOfWeek;
systime.wDay = (ushort)sysTime.Day;
systime.wHour = (ushort)sysTime.Hour;
systime.wMinute = (ushort)sysTime.Minute;
systime.wSecond = (ushort)sysTime.Second;
systime.wMilliseconds = (ushort)sysTime.Millisecond;
Win32SetSystemTime(ref systime);
}
Quand je déboguer tout semble bon et toutes les valeurs sont correctes, mais quand il appelle le Win32SetSystemTime (ref systime) l'heure réelle du système (heure d'affichage) ne change pas et reste la même. La partie étrange est que quand j'appelle le Win32GetSystemTime (réf systime) il me donne la nouvelle heure mise à jour. Quelqu'un peut-il me donner de l'aide à ce sujet?
que je vois, TimeSystem est non de la classe de système de base, êtes-vous sûr que TimeSystem ne change pas la temps? essayez de commenter le Win32SetSystemTime (ref systime); line – Avram