通过VB6将ASP编译封装成DLL组件最简教程 附全部工程源文件

1、新建DLL
打开VB6-->文件-->新建工程-->选择ActiveX DLL-->确定

2、将默认工程、类重命名
工程重命名:工程-->工程1 属性(此名称对应窗体内工程项目名称)-->在打开对话框中将“工程名称”重命名为ASP2DLL(当DLL组件在系统中注册后,在asp中默认的调用方法是“工程名.类名”)-->确定

类重命名在属性窗口中将名称重命名为Demo

3、定义ASP基本对象
添加模块:工程-->添加模块-->选择“模块”-->打开

重命名模块:工程资源管理器-->模块--Module1-->在属性窗口中将Module1重命名为“ASPMod”

添加模块代码,此段代码几乎适用于所有使用vb封装的asp DLL组件中,其中的ASP2DLL更改为工程名或者在调用时保持一致即可,代码如下:


代码如下:

Public objContext As ObjectContext
Public Application As ASPTypeLibrary.Application
Public Server As ASPTypeLibrary.Server
Public Session As ASPTypeLibrary.Session
Public Response As ASPTypeLibrary.Response
Public Request As ASPTypeLibrary.Request
Public Sub ASP2DLL_Initialize()
On Error Resume Next
Set objContext = GetObjectContext
Set Application = objContext.Item("Application")
Set Server = objContext.Item("Server")
Set Session = objContext.Item("Session")
Set Request = objContext.Item("Request")
Set Response = objContext.Item("Response")
End Sub
Public Sub ASP2DLL_Terminate()
On Error Resume Next
Set Application = Nothing
Set Server = Nothing
Set Session = Nothing
Set Request = Nothing
Set Response = Nothing
Set objContext = Nothing
End Sub
Public Function Eval(ByRef strEval)
Dim EvalObject As New ScriptControl
EvalObject.Language = "VBScript"
Eval = EvalObject.Eval(strEval)
Set EvalObject = Nothing
End Function

4、保存新创建的DLL
文件-->保存工程,一路确定下来,将模块、类模块、工程文件全部保存在一个文件夹下
5、类模块中调用ASP对象
工程资源管理器-->类模块-->双击Demo切换到Demo类模块代码编辑器,贴上代码,初始化类调用及类销毁,代码如下:


代码如下:

Private Sub Class_Initialize()
ASP2DLL_Initialize
End Sub
Private Sub Class_Terminate()
ASP2DLL_Terminate
End Sub

至此,一个基本的DLL框架结束,下面可以根据自己需要去完善所需封装的函数了。
6、新创建一个测试函数
在Demo类模块下贴上以下两段测试函数。


代码如下:

Public Sub hello()
Response.Write ("Hello World!")
Exit Sub
End Sub

7、编译生成DLL
文件-->生成ASP2DLL.dll-->选择工程所在文件夹确定,ok,至此如果没有错误信息提示的话,则证明dll组件已编译成功。
8、注册、卸载组件
在ASP2DLL.dll组件所在目录创建
“注册.bat”批处理文件,输入:


代码如下:

iisreset/stop
regsvr32/s ASP2DLL.dll
iisreset/start

“卸载.bat”批处理文件,输入:


代码如下:

iisreset/stop
regsvr32 /u /s ASP2DLL.dll
iisreset/start

双击运行注册.bat,成功注册会提示:“ASP2DLL.dll 中的 DllRegisterServer 成功。”

9、在ASP程序中调用刚封装好的DLL组件及测试函数
步骤2中我们知道“当DLL组件在系统中注册后,在asp中默认的调用方法是‘工程名.类名'”,因此,应这样创建对象:set Obj = Server.CreateObject("工程名.类名") ,代码如下:


代码如下:

<%
Dim ASP2DLL
Set ASP2DLL = Server.CreateObject("ASP2DLL.Demo")
ASP2DLL.hello()
Set ASP2DLL = Nothing
%>

10、包含工程文件等相关所有内容打包下载链接(20110221更新下载链接) 打包下载

在编译DLL时需要注意的几点:
1、避免使用vb保留关键字作为函数或变量名;
2、正则、部分Vbscript函数如Eval需要加载“工程-->引用-->Microsoft Script Control 1.0”及“Microsoft VBScript Regular Expressions 5.5”;
3、封装并不能带来本质上的速度提升,虚拟主机、远程服务器需有组件注册权限;
4、对已经存在的组件名称或者修改了dll文件,必须先停止IIS,再重启IIS注册dll组件;
5、VB6 SP6精简绿色版下载链接

原文来自:http://www.dlstu.cn/code/default.asp?cateID=20 感谢作者的辛勤劳动,东西太好了,就是网站访问太慢了

(0)

相关推荐

  • VB实现屏蔽文本框右键菜单的复制、粘贴等功能的方法

    本文实例讲述了VB屏蔽文本框中的右键菜单.复制.粘贴等功能的实现方法.该功能就是禁止文本框的右键功能,造成点击鼠标右键无效.是非常常见的一类实用功能. 具体的功能模块代码如下: '========================================================== '| 模 块 名 | TextBoxDisableAbility '| 说 明 | 禁止文本框的功能 '=================================================

  • ACCESS的参数化查询,附VBSCRIPT(ASP)和C#(ASP.NET)函数第1/2页

    最近因项目需要用ACCESS做数据库开发WEB项目 看论坛上还许多人问及ACCESS被注入的安全问题 许多人解决的方法仍然是用Replace替换特殊字符,然而这样做也并没有起到太大做用 今天我就把我用ACCESS参数化查询的一些方法和经验和大家分享 希望对大家有所启发,有写的不对的地方希望高手们多多指教 ASP.NET 用OleDbCommand的new OleDbParameter创建参数货查询 ASP用Command的CreateParameter 方法创建参数化查询 (SQL储存过程查询也

  • 读取Access数据库的vbscript代码打包下载

    效果如图所示:核心代码: 复制代码 代码如下: Option Explicit Dim arrTables( ), i, idxTables, intValidArgs Dim blnContent, blnFieldNames Dim objConn, objFSO, objRS, objSchema Dim strConnect, strHeader, strOutput Dim strFile, strResult, strSQL, strTable Const adSchemaTable

  • VB调用Word拼写检查功能实例

    众所周知,Word有自带的拼写检查功能.VB中想要实现调用 Word 拼写检查功能其实很简单就可以实现,方法是先建立word对象,然后把需要检查的字符串放到 WORD中,调用word拼写检查,再取出返回值,最后关闭对象. 各个步骤的具体实现代码如下所示: Function CheckSpell(IncorrectText as string) as string Dim Word As Object, retText$ On Error Resume Next '建立WORD对象并打开 Set

  • VB6实现连接Access数据库的ADODB代码实现方法

    本文实例讲述了使用ADODB.Connection连接access数据库的方法,驱动类型版本为:Microsoft.Jet.OLEDB.4.0.在VB的数据库操作中,连接数据库是第一步,也是最基本的,本文所述的这个例子,对于初学者学习如何在VB中连接Access数据库有着很好的借鉴参考价值. 具体实现代码如下: VERSION 5.00 Begin VB.Form 操作数据库 Caption = "VB操作数据库" ClientHeight = 3645 ClientLeft = 49

  • VB实现的倒计时类代码详解

    本文所述为用VB制作倒计时程序用到的一个Module类代码,是基于控制台的倒计时程序,可供VB初学者或者VB爱好者参考学习,当然读者也可以将其拷贝代码到VB工程里面直接使用,不过需要自己创建相关的代码,对于初学者来说,也是很容易看懂的一段代码. 具体功能代码如下: Module Module1 Sub Main() Dim a As Date Dim h, m, s As Integer Dim n, i As Long Dim x, z As Long Dim y As Long Consol

  • VB的TextBox文本框实现垂直居中显示的方法

    本文实例代码可以实现让VB的TextBox文本框垂直居中显示效果.此处需要注意:Form_Load()窗体代码中的多行属性设置必须为真,即Text1.MultiLine = True,该属性为只读属性,请在设计时修改,换行会被之后的代码屏蔽,不想屏蔽可自行修改,调用此函数就好了. 具体的功能代码如下: '================================================================================ '| 模 块 名 | TextB

  • VB6中的LSet语句和RSet语句详解

    VB6中有几种长得很像的语句:Let.Set.LSet.RSet. Let用于一般变量的赋值: 复制代码 代码如下: [Let] varname = expression 大部分情况下我们都省略Let,直接用等号赋值,以致于不少人根本不知道Let的存在. Set用于对象的赋值,将变量指向对象并增加对象的引用计数,也有不少人不知道引用计数为何物. 那么LSet是干什么用的呢?咋一看好像是Let和Set的结合体,其实不然.LSet中的L是Left的缩写,与之对应的是RLet.你问我怎么知道L是Lef

  • VB读取线程、句柄及写入内存的API代码实例

    本文所述实例为VB读取内存.线程及句柄的一个API,对涉及系统底层操作的VB编程有一定的帮助,需要的读者可以参考使用.这个API可获取到线程ID,写内存,包括进程句柄,ByVal 内存区地址,数据,总长度,已经完成长度,读取进程,包括进程句柄,ByVal 内存区地址,读取来的数据存放处,要读取的长度,已经读取的长度,内存分配(进程柄,地址[好像只要丢个0进去就行],长度,权限1[MEM_COMMIT],权限2[PAGE_READWRITE])返回:分配到的内存起始地址等功能. 具体实现代码如下:

  • VB6反编译软件VB RezQV2.4a 正式版注册码

    VB6反编译软件VB RezQV2.4a 正式版 (下载该软件)软件说明:VB6反编译软件VB RezQV2.4a 正式版注册码:name: Ardith Freebairncode: 680F-69EA-7154-0CA3 发布者:Regkey.cn发布时间:2006-2-1 12:02:45发布IP:202.96.134.128

随机推荐