龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

用VB实现在程序运行时使系统日期和不被修改

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
在开发软件时,有时可能需要使软件在运行时不让别人从控制面板中修改修改系统的日期和时间,实现此功能的具体思路是:在软件运行是自己建立一个时钟,如果发现系统时间被修改
在开发软件时,有时可能需要使软件在运行时不让别人从控制面板中修改修改系统的日期和时间,实现此功能的具体思路是:在软件运行是自己建立一个时钟,如果发现系统时间被修改,再用自己的时钟将系统时间改回来就可以了,VB中有一个控件叫SysInfo,可以用它的TimeChanged事件来监测系统时间是否已修改,请看下面的例子程序:
  1、建立一个标准EXE工程,在Form1上添加一个Timer控件、Label控件和SysInfo控件;
  2、声明以下变量:
  '表示小时的整数
  DimhAsInteger
  '表示分钟的整数
  DimmAsInteger
  '表示秒的整数
  DimsAsInteger
  '表示小时的字符串
  DimstrhAsString
  '表示分钟的字符串
  DimstrmAsString
  '表表示秒的字符串
  DimstrsAsString
  '表示修改前的日期
  DimriqiAsDate
  '表示修改前的时刻
  DimshikeAsDate
  
  3、其它代码如下:
  PrivateSubForm_Load()
  '取出系统时间和日期初始化变量
  h=Hour(Now)
  m=Minute(Now)
  s=Second(Now)
  riqi=DateValue(Now)
  EndSub
  
  
  PrivateSubTimechange()
  Ifh<10Then
  strh="0"&h
  Else
  strh=h
  EndIf
  
  Ifm<10Then
  strm="0"&m
  Else
  strm=m
  EndIf
  
  Ifs<10Then
  strs="0"&s
  Else
  strs=s
  EndIf
  shike=Timevalue(strh&":"&strm&":"&strs)
  
  EndSub
  
  
  PrivateSubSysInfo1_TimeChanged()
  IfNotTimeValue(Now)=shikeThen
  Time=shike
  EndIf
  IfNotDateValue(Now)=riqiThen
  Date=riqi
  EndIf
  EndSub
  
  PrivateSubTimer1_Timer()
  s=s 1
  '由于用Timer控件计时存在一定误差,所以每分钟校正一次时间
  Ifs>=60Then
  h=Hour(Now)
  m=Minute(Now)
  s=Second(Now)
  '零点时改变riqi变量的值
  Ifh=0Then
  riqi=DateValue(Now)
  EndIf
  EndIf
  Timechange
  Label1.Caption=shike
  EndSub->

精彩图集

赞助商链接