在开发软件时,有时可能需要使软件在运行时不让别人从控制面板中修改修改系统的日期和时间,实现此功能的具体思路是:在软件运行是自己建立一个时钟,如果发现系统时间被修改,再用自己的时钟将系统时间改回来就可以了,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->