【 tulaoshi.com - 编程语言 】
在开发软件时,有时可能需要使软件在运行时不让别人从控制面板中修改修改系统的日期和时间,实现此功能的具体思路是:在软件运行是自己建立一个时钟,如果发现系统时间被修改,再用自己的时钟将系统时间改回来就可以了,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()
Ifh10Then
strh="0"&h
Else
strh=h
EndIf
Ifm10Then
strm="0"&m
Else
strm=m
EndIf
Ifs10Then
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->