直播中
(一)運行VB6,系統(tǒng)彈出了一個“新建工程”的對話框。選擇ActiveX Dll
接著可以在工程管理器上看見“工程一”和所屬的一個類“ Class1”,讓我們想先幫他們改上一個好聽的名字吧,
要不你在ASP中使用這個自制組件時,難道用
set obj=server.createobject("工程一.class1")
這么難聽的名字嗎?快去把它改改吧。我們把工程一改名為:systimeset,而class1改為:timeset。這樣好多了
吧?好了,開始為類timeset添加代碼了,先想一想,vb6本身好象沒有能設(shè)定系統(tǒng)時間和日期的函數(shù)吧(小虎不記得有沒
有了)那么怎么辦呢?別著急,大家聽過WIN32API函數(shù)嗎?這是微軟的windows系統(tǒng)級函數(shù)。提供有豐富的操作系統(tǒng)功能,
別說改日期,改時間,就是讓你的window重起動也可以。小虎打開了厚厚的WIN32API函數(shù)大全,終于找到了SetSystemTime
這個函數(shù),win32API原本是設(shè)計為C++程序員使用的,在VB里調(diào)用它得先聲名,好在微軟還想得挺周到,VB40以上的版本,
都帶有API文本瀏覽器,我們運行它,它就在開始菜單的VB程序組里,運行后彈出了個框框,從文件菜單中選擇加載文本文
件。選擇WIN32API.TXT,API類型中選擇聲明,然后在那個可用項中找到SetSystemTime這個東西,雙擊它,一段代碼就出
現(xiàn)在選定項里,接著還要選東西,在API類型中選擇類型,找到SystemTime這個類型,同樣把它雙擊,好了按一下復(fù)制,把
剛才選擇的東西都貼到粘貼板中。關(guān)了這個API瀏覽器,我們的東西算是夠用了。
現(xiàn)在編寫VB代碼,雙擊timeset類,在類里加入下面的代碼。
Option Explicit
Private SystemTime As SystemTime
'這些就是從粘貼板里來的,我們看看systemtime這個類型,也就是差不多C++中的結(jié)構(gòu)體,光看看他那八項就知道是一些
年,月,日,小時,分種。。。等的八大項,現(xiàn)在只要為這八大項賦上值再調(diào)用SetSystemTime這個WIN32API函數(shù),瞧瞧你
的服務(wù)器吧,日期時間都給改掉了,如果你用win98來做服務(wù)器,試把它調(diào)到26號看看,有沒有CIH,^0^,由于這是個例
子,因此大部分值我都采用固定的值,而不是從ASP中傳過來的值,從ASP中傳過來只有HOUR,和MINUTE,小時和分鐘,如
果你們有興趣加上其它幾個的話,那么就修改一下程序吧。
Private Declare Function SetSystemTime Lib "kernel32" (lpSystemTime As SystemTime) As Long
Private Type SystemTime
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Dim tmp
Private m_Hour As Integer
Private m_Minute As Integer
'聲明timeset類的公有屬性,比如當你用set obj=server.createobject("systimeset.timeset")創(chuàng)建了一個服務(wù)器對象
時,需要對timeset進行賦值,也就是指定要設(shè)置的系統(tǒng)時間吧,那么就得聲明下面這寫timeset的公有屬性,我這有只聲
明了HOUR和Minute,也就是只提供更改小時和分鐘,如過你要改其它的幾個,那么自己弄上去吧。
Public Property Get Hour() As Integer
Hour = m_Hour
End Property
Public Property Let Hour(tmp_Hour As Integer)
m_Hour = tmp_Hour
End Property
Public Property Get Minute() As Integer
Minute = m_Minute
End Property
Public Property Let Minute(tmp_Minute As Integer)
m_Minute = tmp_Minute
End Property
有了HOUR和Minute屬性,那么你在ASP中創(chuàng)建了服務(wù)器對象obj時,就可以通過
obj.Hour=10
obj.Minute=10著樣來對它賦值,意思就是你打算把時間設(shè)為10:10分。
好了,最后就是公有方法了,我們聲命一個setup()的方法,只要一調(diào)用它,就馬上更改時間。其它幾個參數(shù)我固定使用常
量,大家可以改一下,這個不用我說了吧?應(yīng)改會有體會了,總之不能空著,不然調(diào)用WIN32API函數(shù)會失敗返回0的,如過
是1就成功了。我這里設(shè)為1999-10-1日,我們的50周年國慶。
Public Function setup() As Integer
SystemTime.wDay = 1
SystemTime.wDayOfWeek = 1
SystemTime.wMilliseconds = 0
SystemTime.wMonth = 10
SystemTime.wSecond = 0
SystemTime.wYear = 1999
SystemTime.wHour =Hour
SystemTime.wMinute =Minute
setup = SetSystemTime(SystemTime)
End Function
最后保存工程,并編譯DLL,編譯后這個組件會由VB6自動注冊的,所以我們可以馬上在ASP 中調(diào)用了。我們馬上寫一
個簡單的ASP程序。
*test.asp
<% @language="vbscript" %>
<%
response.Expires=0
set obj=server.createobject("systimeset.timeset")
obj.Hour=10
obj.Minute=10
result=obj.setup
if result=1 then
response.write "系統(tǒng)時間已成功修改"
else
response.write "系統(tǒng)時間修改失敗"
endif
set obj=Nothing
%>
累死我了,一口氣做這個組件和打了這么多字,具體的ASP組件注冊等問題下次我會對大家解說。我把ASP組件源程序
先打包,那么大家就不用敲了,直接拿去編譯就行了,由于工程是vb6做的,所以需要VB6才能打開編譯。如果大家覺得本
站辦的挺好的話,請為小虎的網(wǎng)站做個推薦和友情連接吧,希望通過交流學(xué)習(xí),我們能共同進步。如轉(zhuǎn)載小虎的文章,請
注明出處,必竟小虎是花了不少時間來敲的。~0~
以上組件的運行環(huán)境為:Pwin98+Pws4