在开发软件时,有时可能需要使软件在运行时不让别人从控制面板中修改修改系统的日期和时间,实现此功能的具体思路是:在软件运行是自己建立一个时钟,如果发现系统时间被修改,再用自己的时钟将系统时间改回来就可以了,VB中有一个控件叫SysInfo,可以用它的TimeChanged事件来监测系统时间是否已修改,请看下面的例子程序: 1、 建立一个标准EXE工程,在Form1上添加一个Timer控件、Label控件和SysInfo控件; 2、 声明以下变量: '表示小时的整数 Dim h As Integer '表示分钟的整数 Dim m As Integer '表示秒的整数 Dim s As Integer '表示小时的字符串 Dim strh As String '表示分钟的字符串 Dim strm As String '表表示秒的字符串 Dim strs As String '表示修改前的日期 Dim riqi As Date '表示修改前的时刻 Dim shike As Date
3、 其它代码如下: Private Sub Form_Load() '取出系统时间和日期初始化变量 h = Hour(Now) m = Minute(Now) s = Second(Now) riqi = DateValue(Now) End Sub
Private Sub Timechange() If h < 10 Then strh = "0" & h Else strh = h End If
If m < 10 Then strm = "0" & m Else strm = m End If
If s < 10 Then strs = "0" & s Else strs = s End If shike= Timevalue(strh & ":" & strm & ":" & strs)
End Sub
Private Sub SysInfo1_TimeChanged() If Not TimeValue(Now) = shike Then Time =shike End If If Not DateValue(Now) = riqi Then Date = riqi End If End Sub
Private Sub Timer1_Timer() s = s + 1 '由于用Timer控件计时存在一定误差,所以每分钟校正一次时间 If s >= 60 Then h = Hour(Now) m = Minute(Now) s = Second(Now) '零点时改变riqi变量的值 If h = 0 Then riqi = DateValue(Now) End If End If Timechange Label1.Caption = shike End Sub  
|