程序退出时更正用户修改的系统时间

程序运行时运行用户更改系统时间,
但再程序退出时调用函数把系统时间改回到 在原来的系统时间基础上 经过的时间.

        [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);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值