(一)運行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時,就可以通過