第一個ASP組件:設定伺服器日期時間組件

來源:互聯網
上載者:User
伺服器 網路之門
     
  在進入我們需習的第一個組件之前,小虎首先得說明一下,由於小虎的水平有限,可能在下面的這些說明過程中存在
不少錯誤,希望大家提出指證,在這裡我希望能與大家分享一下ASP的學習經驗,小虎的這個網站推聳的是原創精神,很多
東西都是DIY,因此程式編寫過程中也會染上小虎本身不良的編程習慣。而且整個教學網站也只有小虎一個維護,因此技術
上肯定存在不少問題,望大家諒解。
  ASP組件為我們的ASP編程提供了強大的擴充功能,比如我們需要在伺服器中啟動一個應用程式,設定伺服器的時間,
訪問作業系統內部資訊等等,光靠ASP是幹不了的。很大部分都需要藉助自己開發的ASP組件才能實現,ASP本身為我們提供
了幾個非常有用的組件,ADO資料庫訪問組件,檔案輸入輸出組件,廣告輪換組件等等。但有很多時侯我們需要的一些特殊
的功能。
  首先,小虎用自己最熟悉的VB來做這個組件,大夥先在自己的計算雞上裝上個D版的VB吧,版本沒要求,但小虎是用
VB6的。開始第一步怎麼樣呢?

(一)運行VB6,系統彈出了一個“建立工程”的對話方塊。選擇ActiveX Dll
   接著可以在工程管理器上看見“工程一”和所屬的一個類“ Class1”,讓我們想先幫他們改上一個好聽的名字吧,
要不你在ASP中使用這個自製組件時,難道用
   set obj=server.createobject("工程一.class1")
   這麼難聽的名字嗎?快去把它改改吧。我們把工程一改名為:systimeset,而class1改為:timeset。這樣好多了
吧?好了,開始為類timeset添加代碼了,先想一想,vb6本身好象沒有能設定系統時間和日期的函數吧(小虎不記得有沒
有了)那麼怎麼辦呢?別著急,大家聽過WIN32API函數嗎?這是微軟的windows系統級函數。提供有豐富的作業系統功能,
別說改日期,改時間,就是讓你的window重起動也可以。小虎開啟了厚厚的WIN32API函數大全,終於找到了SetSystemTime
這個函數,win32API原本是設計為C++程式員使用的,在VB裡調用它得先聲名,好在微軟還想得挺周到,VB40以上的版本,
都帶有API文本瀏覽器,我們運行它,它就在開始菜單的VB程式組裡,運行後彈出了個框框,從檔案菜單中選擇載入文本文
件。選擇WIN32API.TXT,API類型中選擇聲明,然後在那個可用項中找到SetSystemTime這個東西,雙擊它,一段代碼就出
現在選定項裡,接著還要選東西,在API類型中選擇類型,找到SystemTime這個類型,同樣把它雙擊,好了按一下複製,把
剛才選擇的東西都貼到粘貼板中。關了這個API瀏覽器,我們的東西算是夠用了。
   現在編寫VB代碼,雙擊timeset類,在類裡加入下面的代碼。
Option Explicit
Private SystemTime As SystemTime
'這些就是從粘貼板裡來的,我們看看systemtime這個類型,也就是差不多C++中的結構體,光看看他那八項就知道是一些
年,月,日,小時,分種。。。等的八大項,現在只要為這八大項賦上值再調用SetSystemTime這個WIN32API函數,瞧瞧你
的伺服器吧,日期時間都給改掉了,如果你用win98來做伺服器,試把它調到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")建立了一個伺服器對象
時,需要對timeset進行賦值,也就是指定要設定的系統時間吧,那麼就得聲明下面這寫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中建立了伺服器對象obj時,就可以通過

obj.Hour=10
obj.Minute=10著樣來對它賦值,意思就是你打算把時間設為10:10分。

好了,最後就是公有方法了,我們聲命一個setup()的方法,只要一調用它,就馬上更改時間。其它幾個參數我固定使用常
量,大家可以改一下,這個不用我說了吧?應改會有體會了,總之不能空著,不然調用WIN32API函數會失敗返回0的,如過
是1就成功了。我這裡設為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 中調用了。我們馬上寫一
個簡單的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 "系統時間已成功修改"

else

response.write "系統時間修改失敗"

endif


set obj=Nothing

%>


  累死我了,一口氣做這個組件和打了這麼多字,具體的ASP組件註冊等問題下次我會對大家解說。我把ASP組件來源程式
先打包,那麼大家就不用敲了,直接拿去編譯就行了,由於工程是vb6做的,所以需要VB6才能開啟編譯。如果大家覺得本
站辦的挺好的話,請為小虎的網站做個推薦和友情串連吧,希望通過交流學習,我們能共同進步。如轉載小虎的文章,請
註明出處,必竟小虎是花了不少時間來敲的。~0~
以上組件的運行環境為:Pwin98+Pws4



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。