(一)运行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时,就可以通过