调用系统api修改系统时间
一:截图
二:代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace SetDate { public partial class Frm_Main : Form { public Frm_Main() { InitializeComponent(); } public class SetSystemDateTime//自定义类SetSystemDateTime,用于设置系统日期,为了使用DllImportAttribute类(DllImportAttribute类是指可以将属性应用于方法, //并由非托管动态链接库(DLL)作为静态入口点公开), //需要引入命名空间:using System.Runtime.InteropServices; { [DllImportAttribute("Kernel32.dll")]//使用包含要导入的方法的 DLL 的名称初始化 DllImportAttribute 类的新实例。 public static extern void GetLocalTime(SystemTime st);//C#要设置系统时间必须要调用Win32的API,而其中相关的函数就是SetSystemTime(), GetSystemTimer(), SetLocalTime(), GetLocalTime(), //这似乎是用VC写的函数,在VC++中是可以直接调用的。 //对于这两个函数,其输入参数必须是一个下面这样的结构体,其成员变量类型必须是ushort,成员变量不能改变顺序。 [DllImportAttribute("Kernel32.dll")] public static extern void SetLocalTime(SystemTime st); } [StructLayoutAttribute(LayoutKind.Sequential)] public class SystemTime//自定义类SystemTime用于定义日期类 { public ushort vYear;//年 public ushort vMonth;//月 public ushort vDayOfWeek;//星期 public ushort vDay;//日 public ushort vHour;//小时 public ushort vMinute;//分 public ushort vSecond;//秒 } private void button1_Click(object sender, EventArgs e) { this.textBox1.Text = DateTime.Now.ToString("F") +//得到系统时间 " " + DateTime.Now.ToString("dddd"); } private void button2_Click(object sender, EventArgs e) { if (MessageBox.Show("您真的确定更改系统当前日期吗?",//设置系统当前日期时间 "信息提示", MessageBoxButtons.OK) == DialogResult.OK) { DateTime Year = this.dateTimePicker1.Value;//得到时间信息 SystemTime MySystemTime = new SystemTime();//创建系统时间类的对象 SetSystemDateTime.GetLocalTime(MySystemTime);//得到系统时间 MySystemTime.vYear = (ushort)this.dateTimePicker1.Value.Year;//设置年 MySystemTime.vMonth = (ushort)this.dateTimePicker1.Value.Month;//设置月 MySystemTime.vDay = (ushort)this.dateTimePicker1.Value.Day;//设置日 MySystemTime.vHour = (ushort)this.dateTimePicker2.Value.Hour;//设置小时 MySystemTime.vMinute = (ushort)this.dateTimePicker2.Value.Minute;//设置分 MySystemTime.vSecond = (ushort)this.dateTimePicker2.Value.Second;//设置秒 SetSystemDateTime.SetLocalTime(MySystemTime);//设置系统时间 button1_Click(null, null);//执行按钮点击事件 } } } }