我的电脑主板似乎出现了问题,经常出现电脑时间错乱,导致网页打不开(其实是和证书有关)。更换了新的电池没有效果,又不想掏钱换主板,想了下,每次去设置时间又很麻烦,因此自己写了个联网时间设置工具,只要自己设置为开机自动运行,即可在开机并联入网络后自动同步时间(未联网将会等待联网)。含源码和已经编译的工具,电脑需要.net framework 4.0 支持!
分享一下程序的思路
1、从互联网获取时间
初步设想,网上应该有能够提供时间的接口,因此上网搜。还真搜到一个,苏宁的时间接口
http://quan.suning.com/getSysTime.do
能获取到时间就好办了嘛,现在要检测联网状态,只有在计算机已经接入入互联网 情况下才去走接口获取数据
2、获取计算机联网状态
windows有相应api直接上代码
[DllImport("wininet")]
//判断网络状况的方法,返回值true为连接,false为未连接
public extern static bool InternetGetConnectedState(out int conState, int reder);public static bool IsNeting
{
get
{
int i = 0;
return InternetGetConnectedState(out i, 0);
}
}//需要using System.Runtime.InteropServices;
3、设置时间
C#设置时间的方法也是通过WINDOWS提供的API
//调用Kernel32.DLL
[DllImport("Kernel32.dll")]
public static extern void SetLocalTime(SystemTime st);
[StructLayout(LayoutKind.Sequential)]
public class 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;
}SystemTime st = new SystemTime();
st.wYear = (ushort)dt.Year;
st.wMonth = (ushort)dt.Month;
st.wDay = (ushort)dt.Day;
st.Whour = (ushort)dt.Hour;
st.wMinute = (ushort)dt.Minute;
st.wSecond = (ushort)dt.Second;
SetLocalTime(st);//需要using System.Runtime.InteropServices;
这个小工具就用了几个比较简单的技术,其它的大家可以自己看,
工具及源码下载: