用VB實現在程序運行時使系統日期和時間不被修改

發表于:2007-07-14來源:作者:點擊數: 標簽:
作者:彭鋼 在 開發 軟件時,有時可能需要使軟件在運行時不讓別人從控制面板中修改修改系統的日期和時間,實現此功能的具體思路是:在軟件運行是自己建立一個時鐘,如果發現系統時間被修改,再用自己的時鐘將系統時間改回來就可以了, VB 中有一個控件叫SysI
作者:彭鋼

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

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97