在開發軟件時,有時可能需要使軟件在運行時不讓別人從控制面板中修改修改系統的日期和時間,實現此功能的具體思路是:在軟件運行是自己建立一個時鐘,如果發現系統時間被修改,再用自己的時鐘將系統時間改回來就可以了,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->