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

王朝网络·厨房·作者佚名  2007-01-04
宽屏版  字体: |||超大  

作者:彭钢

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有