当前位置: 首页 > news >正文

站长工具同大全站做模具在哪个网站找工作

站长工具同大全站,做模具在哪个网站找工作,咸阳建筑工程网,做网页游戏网站在日常工作中,有时可能会需要获取或修改客户端电脑的系统时间,比如软件设置了Licence有效期,预计2024-06-01 00:00:00到期,如果客户手动修改了客户端电脑时间,往前调整了一年,则软件就可以继续使用一年&…

在日常工作中,有时可能会需要获取或修改客户端电脑的系统时间,比如软件设置了Licence有效期,预计2024-06-01 00:00:00到期,如果客户手动修改了客户端电脑时间,往前调整了一年,则软件就可以继续使用一年,如此循环往复,则Licence将形同虚设。所以有时候需要校验客户端电脑时间和服务器端时间,是否一致,如果不一致,则需要修改客户端电脑时间或进行系统提示。本文以一个简单的小例子,简述如何通过C#获取和设置客户端电脑的系统时间,仅供学习分享使用,如有不足之处,还请指正。

涉及知识点

在windows系统中,设置系统时间,主要通过win32提供的API来实现,如下所示:

  • SetLocalTime 设置系统的本地化时间
  • GetLocalTime 获取系统的本地化时间
  • SetSystemTime 设置系统的Utc时间
  • GetSystemTime 获取系统的Utc时间

核心代码

时间结构体

在上述四个系统函数中,都需要一个时间类型的结构体,包含时分秒,年月日。如下所示:

[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 wMilliseconds;public override string ToString(){return $"{wYear}-{wMonth}-{wDay} {wHour}:{wMinute}:{wSecond}.{wMilliseconds}";}
}

系统时间帮助类

为了方便调用,将4个系统函数进行封装到一个类中SysTimeHelper,如下所示:

public class SysTimeHelper
{[DllImport("kernel32.dll")]public static extern bool SetSystemTime(ref SystemTime st);[DllImport("Kernel32.dll")]public static extern bool SetLocalTime(ref SystemTime st);[DllImport("Kernel32.dll")]public static extern void GetSystemTime(ref SystemTime st);[DllImport("Kernel32.dll")]public static extern void GetLocalTime(ref SystemTime st);public static string GetLocalTime(){SystemTime st = new SystemTime();GetLocalTime(ref st);return st.ToString();}public static bool SetLocalTimeByStr(string timestr){bool flag = false;SystemTime sysTime = new SystemTime();DateTime dt = Convert.ToDateTime(timestr);sysTime.wYear = Convert.ToUInt16(dt.Year);sysTime.wMonth = Convert.ToUInt16(dt.Month);sysTime.wDay = Convert.ToUInt16(dt.Day);sysTime.wHour = Convert.ToUInt16(dt.Hour);sysTime.wMinute = Convert.ToUInt16(dt.Minute);sysTime.wSecond = Convert.ToUInt16(dt.Second);try{flag = SetLocalTime(ref sysTime);}catch (Exception ex){string e = ex.Message;return false;}return flag;}/// <summary>        /// 时间戳转为C#格式时间        /// </summary>        /// <param name=”timeStamp”></param>        /// <returns></returns>        public static DateTime ConvertStringToDateTime(string timeStamp){DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));long lTime = long.Parse(timeStamp + "0000");TimeSpan toNow = new TimeSpan(lTime);return dtStart.Add(toNow);}/// <summary>/// 时间戳转为C#格式时间10位/// </summary>/// <param name="timeStamp">Unix时间戳格式</param>/// <returns>C#格式时间</returns>public static DateTime GetDateTimeFrom1970Ticks(long curSeconds){DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));return dtStart.AddSeconds(curSeconds);}}

函数调用

在页面调用时,即可通过SysTimeHelper帮助类,进行获取和修改系统时间。如下所示:

public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();}private void Window_Loaded(object sender, RoutedEventArgs e){var time = SysTimeHelper.GetLocalTime();this.txtTime.Text = time;}private void Button_Click(object sender, RoutedEventArgs e){var time = this.txtTime.Text;bool flag = SysTimeHelper.SetLocalTimeByStr(time);if(flag){MessageBox.Show("设置成功");}else{MessageBox.Show("设置失败");}}
}

实例演示

通过VS运行程序,在打开程序时,获取时间,然后手动修改时间,点击设置,如下所示:

如果设置过后,想要回复,可通过设置页面【同步时钟】进行恢复,如下所示:

注意,如果在调试时,设置失败【SetLocalTime返回false】,可通过【以管理员身份运行】的方式打开Visual Studio,如下所示:

或者直接通过【以管理员身份运行】启动程序,如下所示:

以上就是【C# 通过Win32API设置客户端系统时间】的全部内容,希望可以抛砖引玉,一起学习,共同进步。

http://www.yayakq.cn/news/125819/

相关文章:

  • 网站开发培训机构给自己的公司做网站怎么做好
  • 临沂哪里做网站中铁建设集团董事长
  • 个人建设网站盈利需要什么材料新手开店适合开什么店
  • 西安域名注册网站建设做旅游网站
  • 企业做国外网站多少钱企业网站建设费用财务处理
  • 大型企业的微网站谁做电子商务网站建设规划报告
  • 网站如何做超链接微信管理中心
  • 乐山建设网站广州商砼建站规范
  • 无极修仙网站WordPress里h1跟p有什么
  • 官方网站链接如何做衡水企业做网站多少钱
  • 罗湖做网站的公司便宜自适应网站建设
  • 免费下载软件的网站wordpress主题屋
  • 有哪些做婚礼电子请柬的网站wordpress 程序员
  • 关于推进公司网站开发的请示免费建网站的步骤
  • 为企业做贡献演讲稿网站优化搜索排名
  • 外卖网站 模板企业年金交满多少年才能领取
  • 网站锚文本的内链建设太仓住房与城乡建设局网站
  • 做网络作家哪个网站好阿里云域名注册备案流程
  • 网站模块在线制作教程学php做网站
  • 网站登录页面模板 下载企业网站实名认证时间
  • 阿里巴巴申请网站怎么做上海静安网站制作
  • 制作网站比较大的几家公司wordpress免费注册
  • 厦门网站建设商家商丘互联网公司
  • 深圳宝安专业做网站公司分销平台用户协议
  • 班级网站建设开题报告湖南网站开发 d岚鸿
  • 一些可以做翻译的网站wordpress七牛sdk
  • 建设银行官方网站木材网站建设哪家好
  • 正规设计兼职网站有哪些张家港保税区建设局网站
  • 蓝田县住房与城乡建设局网站苏州优化亚当
  • 南宁网站开发价格英文网站源码下载