程序运行时运行用户更改系统时间,
但再程序退出时调用函数把系统时间改回到 在原来的系统时间基础上 经过的时间.
但再程序退出时调用函数把系统时间改回到 在原来的系统时间基础上 经过的时间.
[StructLayout(LayoutKind.Sequential)]
public 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 wMiliseconds;
}
[DllImport( " Kernel32.dll " )]
public static extern bool SetSystemTime( ref SystemTime sysTime);
[DllImport( " Kernel32.dll " )]
public static extern void GetSystemTime( ref SystemTime sysTime);
/// <summary>
/// 设置系统时间。
/// </summary>
public void ReSetSystemTime()
{
SystemTime sysTime = new SystemTime();
// public DateTime ProgramStartTime;
// frmMain.ProgramStartTime 在 frmMain_Load 符值:ProgramStartTime = DateTime.Now;
// public static int sysTickCount;
// frmMain. sysTickCount 在 frmMain_Load 符值:ProgramStartTime = System.EnvironmentTickCount; DateTime DateTimeNow = frmMain.ProgramStartTime.AddTicks(Convert.ToUInt16(System.Environment.TickCount - frmMain.sysTickCount));
sysTime.wYear = Convert.ToUInt16(DateTimeNow.Year);
sysTime.wMonth = Convert.ToUInt16(DateTimeNow.Month);
//处置北京时间
int nBeijingHour = DateTimeNow.Hour - 8;
if (nBeijingHour <= 0)
{
nBeijingHour += 24;
sysTime.wDay = Convert.ToUInt16(DateTimeNow.Day - 1);
sysTime.wDayOfWeek = Convert.ToUInt16(DateTimeNow.DayOfWeek - 1);
}
else
{
sysTime.wDay = Convert.ToUInt16(DateTime.Now.Day);
sysTime.wDayOfWeek = Convert.ToUInt16(DateTime.Now.DayOfWeek);
}
sysTime.wHour = Convert.ToUInt16(nBeijingHour);
sysTime.wMinute = Convert.ToUInt16(DateTimeNow.Minute);
sysTime.wSecond = Convert.ToUInt16(DateTimeNow.Second);
sysTime.wMiliseconds = Convert.ToUInt16(DateTimeNow.Millisecond);
SetSystemTime(ref sysTime);
}
public 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 wMiliseconds;
}
[DllImport( " Kernel32.dll " )]
public static extern bool SetSystemTime( ref SystemTime sysTime);
[DllImport( " Kernel32.dll " )]
public static extern void GetSystemTime( ref SystemTime sysTime);
/// <summary>
/// 设置系统时间。
/// </summary>
public void ReSetSystemTime()
{
SystemTime sysTime = new SystemTime();
// public DateTime ProgramStartTime;
// frmMain.ProgramStartTime 在 frmMain_Load 符值:ProgramStartTime = DateTime.Now;
// public static int sysTickCount;
// frmMain. sysTickCount 在 frmMain_Load 符值:ProgramStartTime = System.EnvironmentTickCount; DateTime DateTimeNow = frmMain.ProgramStartTime.AddTicks(Convert.ToUInt16(System.Environment.TickCount - frmMain.sysTickCount));
sysTime.wYear = Convert.ToUInt16(DateTimeNow.Year);
sysTime.wMonth = Convert.ToUInt16(DateTimeNow.Month);
//处置北京时间
int nBeijingHour = DateTimeNow.Hour - 8;
if (nBeijingHour <= 0)
{
nBeijingHour += 24;
sysTime.wDay = Convert.ToUInt16(DateTimeNow.Day - 1);
sysTime.wDayOfWeek = Convert.ToUInt16(DateTimeNow.DayOfWeek - 1);
}
else
{
sysTime.wDay = Convert.ToUInt16(DateTime.Now.Day);
sysTime.wDayOfWeek = Convert.ToUInt16(DateTime.Now.DayOfWeek);
}
sysTime.wHour = Convert.ToUInt16(nBeijingHour);
sysTime.wMinute = Convert.ToUInt16(DateTimeNow.Minute);
sysTime.wSecond = Convert.ToUInt16(DateTimeNow.Second);
sysTime.wMiliseconds = Convert.ToUInt16(DateTimeNow.Millisecond);
SetSystemTime(ref sysTime);
}