下午班上一做网站的同学打电话,请我帮忙做一个小工具。源于他做了一个网站,手头也采集了大量的帖子(应该是电子文档吧),发帖子总不能是一个时候发的吧,于是就请可帮做一个小工具——在指定的时间范围内间隔指定的时间随机改变系统时间。

要改变系统时间,.NET里好像没有现成的方法,就只有通过Win32 API来实现了。于是我就查阅了API大全,得到的SetSystemTime函数:

小工具—系统API应用

    在SetSystemTime的参数中,参数类型为SYSTEMTIME,查阅MSND后得到SYSTEMTIME的结构如下:

typedef struct _SYSTEMTIME {

WORD wYear;

WORD wMonth;

WORD wDayOfWeek;

WORD wDay;

WORD wHour;

WORD wMinute;

WORD wSecond;

WORD wMilliseconds;

} SYSTEMTIME;

其内容相信不用我说了吧。

所以在C#中SYSTEMTIME的结构和SetSystemTime函数定义如下:

 

 

 1小工具—系统API应用        [StructLayout(LayoutKind.Sequential)]
 2小工具—系统API应用        public struct SystemTime
 3 SystemTime time);

 

 

    已经有了设为系统时间的方法,接下来就需要一个方法来创建随机时间。如果你直接取年的随机值、月的随机值、日的随机值……这种方法是不可行的,因为你会发现取到的时间并不一定是在你限定的时间范围内。

    因为Datetime的基本单位是秒,所有我们可以在秒上做文章:先用TimeSpan求出两个时间之间相差的秒数,在以秒为最大值随机取一个值,然后以就小的时间加上随机取得的数。

 

 

 1小工具—系统API应用public DateTime GetRandomTime(DateTime time1, DateTime time2)
 2}

 

    接下来是将DateTime转换为SystemTime

 

 

}

 

 

    源码下载:

https://files.cnblogs.com/desmend/ChangeSysTime.rar

相关文章:

  • 2022-12-23
  • 2021-12-09
  • 2022-02-10
  • 2021-05-10
  • 2021-11-27
  • 2021-04-05
  • 2021-04-06
猜你喜欢
  • 2021-11-23
  • 2021-09-18
  • 2021-12-03
  • 2021-07-04
  • 2021-11-17
  • 2021-12-31
相关资源
相似解决方案