这几天有人问关于编应.dll的问题,这里贴出一篇,嘿嘿!

问题

ActiveX DLL 可以用来保护代码的一些部分,因为作为开发人员我们知道,用ASP进行工作时,源代码控制是一个艰难而琐碎的过程。ActiveX DLL 是经过编译的代码,没有工程文件中的源代码就不能对其进行修改。这就给开发人员带来许多可能:开发自动操作公共程序的程序并将它们作为共享软件来分发,分发至少有一些源代码保护的ASP应用程序,不断开发自己的ASP程序指令,以在一个全方位多功能的结果中提高ASP的性能。

   你所安装的第一个ActiveX DLL 文件将注册并安装Visual Basic 6 的运行时间文件,它允许运行经过编译的代码。但是要注意,这还要求重新启动服务器。当一个现存的DLL被安装并使用之后,如果想要对其进行升级, 服务器就将给出一个错误信息提示,说此文件正被另一个过程所使用。要纠正这一问题,也要重新启动服务器后才能完成DLL的升级。请记住在开发中要使用一个测试环境。

   虽然这个例子非常简单,用一个ASP包含文件就可以轻易地实现,但当开发 ActiveX DLL 时,你可以使用 Visual Basic 的全套基本指令、系统外壳指令以及所有控制台所能进行的操作,因此也就允许在线网站和内部互联网的全部自动控制。这样就把原来用ASP包含文件实现的 ActiveX DLL 的性能进行了拓展。

   在用组合框选择填充的数据库域中存储查询关键字的值,提高数据的完整性,轻易地在整个数据库中进行层叠式更新,这些都是很普通的操作。举例来说,现在有一个拼写错误的文本描述,可以在查循表中进行修改,所有选择了这个描述的相关条目都会自动地修改,因为我们已经存储了与这个描述相关的数字。组合框以查询表的内容为基础,这些内容将查询关键字的值与其描述联系起来,如果系统使用了许多查询的话,产生这些组合框的代码会变得非常重复。本文用 ActiveX DLL 来简化创建HTML组合框的程序,用一个数据库查询表中的内容进行填充。例子中的表名为lookup_table,它有以下域:

Lookup_Key: 存储在数据库中的值
Lookup_Field: 对查询元素进行分类
Lookup_Description: 显示在组合框中的描述
   要创建ActiveX DLL,步骤如下:

开始一个新的visual basic 工程文件;
选择ActiveX DLL 作为工程文件类型;
在Properties 窗口,命名类模块和工程文件。将工程文件命名为keiths_lookup ,将模块命名为lookup 。 ASP引用DLL函数时要使用这些名字。以后在ASP码中,将要引用一个名为keiths_lookup.lookup的服务器对象。
用同样的名字保存工程文件和模块,其中工程文件的扩展名为.vbp ,类模块的扩展名为.cls 。在本例中 工程文件的名字为keiths_lookup,模块的名字为lookup。
在工程菜单中,选择References 。这是你可以使用的其它应用程序对象。在本例中,检查Microsoft ActiveX data objects 2.0 库和Microsoft ActiveX Data Objects Recordset 2.0 库。
在包含查询表的IIS服务器数据库中创建一个名为Sumnet 的数据集。这个数据库没有用户名和口令。

   现在可以键入以下代码:

Public Function html_combo(comboname As String, Lookup_field As String) As String

Dim outstring As String
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sqlstring As String
    
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
   
Sqlstring = "SELECT [Lookup_Description],[Lookup_Key] FROM
    [Lookup_Table] WHERE [Lookup_Field] = '" & Lookup_Field & "'"     
   
conn.Open  "DSN=Sumnet;UID=;PWD=.;"
rst.Open sqlstring, conn, 3, 3
If Not rst.EOF Then
    rst.MoveFirst
    outstring = "< Select name='" & comboname & "'  >"
    Do While Not rst.EOF
outstring = outstring & "< Option Value='" &
rst.Fields("lookup_key") & "' >" & _
rst.Fields("lookup_description") & "< /Option > "
       rst.MoveNext
    Loop
End If
   
outstring = outstring & "< /Select >"
html_combo = outstring
rst.Close
conn.Close
   
End Function

   然后,保存工程文件和类模块。

   编译工程文件的步骤如下:

启动Visual Studio 6.0 工具中的Package Deployment Wizard ;
选择刚才创建的ActiveX 工程文件;
点击Package;
选择打包脚本名或使用默认值;
选择Standard Setup ;
选择一个放置安装文件的文件夹;
选择单个cab;
点击Next使用其它默认选项;
在IIS服务器上运行setup。

   现在可以通过ASP代码使用DLL,因为在系统数据库中它已经被注册了。下面的ASP代码将使用所创建的LL内部的函数。它将产生三个组合框,一个用州来填充,一个用位置填充,另外一个用年龄组。第一个参数将成为网页上的对象名,第二个参数是用来填充组合框中查询域的值。

< %@ Language="VBSCRIPT" % >
< %
Set look = Server.CreateObject("keiths_lookup.lookup")
% >
                           
< HTML >< BODY >
                          
< %=look.html_combo("State","States")% >
< %=look.html_combo("Position","Positions")% >
< %=look.html_combo("Age_group","Age_Groups")% >
                          
< /BODY >
< /HTML >

   这个例子非常简单。通过使用更多的参数,如表名、域名等,可以创建许多便携式的函数,这些函数可以用在你的工作中所遇到的各种各样的应用程序中。

   因为这些代码是在服务器一端水平上运行的,所以客户机不需要安装任何东西。这仅仅是用ActiveX DLL所能实现的功能的小小的例子。只需要一点点努力,就可以得到一个在网络用户中不同凡响的多功能应用程序。

时间: 2024-08-29 13:02:46

这几天有人问关于编应.dll的问题,这里贴出一篇,嘿嘿!的相关文章

vs2008-VS搭配QT,x64平台下为挖三维编的dll,怎么调试

问题描述 VS搭配QT,x64平台下为挖三维编的dll,怎么调试 VS搭配QT,x64平台下为挖三维编的dll,怎么调试?新手,试过用挖三维打开调试,但是没看到界面在哪里,请懂得QT的前辈回答,谢谢! 解决方案 https://github.com/Vaa3D/Vaa3D_Wiki/wiki/Build-Vaa3D-on-Linux

近总有人问我注册域名选哪家

前几天又有个朋友问我他的公司注册什么http://www.aliyun.com/zixun/aggregation/38382.html">域名后缀好,由于是公司,而他希望的.com的和.net的域名已经被注册,我就推荐他用.cc和.asia都可以,如果哪天业务扩张到香港,那么就多注册一个.hk(当然是开玩笑).他又问我应该去找哪家公司注册域名.提供域名注册的公司多的去了,由于之前网上的评价,耐思尼克的域名注册服务似乎很齐全,而我本人也在时代网注册过.cc域名,感觉还不错,于是就叫他去那里

最近经常见到有人问长英文不自动换行的问题,里面是我写的一个函数,供大家参考

参考|函数|问题 一段没有空格的长英文,系统会认为它是一个单词,为了保持单词的完整性不会自动换行.其实这种情况不处理也可以,因为在实际应用中除了测试或有人捣乱不会出现这种情况,不过为了以防万一吧,我几个月前写了下面这个函数,只是一种权宜之计,为了对付恶意破坏者.  '------------------------------------------------- ' '  function name: autowrap ' ' '  description : 解决长英文不自动换行的问题 '

图象函数中的中文显示[转],记得有人问过

函数|显示|中文 zlm 2001年6月7日 把它EMAIL给我 我来谈谈我的看法 上一篇 下一篇 在www.phpx.com上读到一段代码,是把GB码转换到UTF8,php中TTF支持UTF8编码的非ASCII字符输出.在分析这段代码之后,发现可以实现中文与ASCII混合输出图象,这样在我们操作图象函数时可以更方便. 代码如下: <? function gb2utf8($gb) { if(!trim($gb)) return $gb; $filename="gb2312.txt"

一组FSO相关FUNCTION,常用代码(也常有人问,重复问)

fso|重复 删除文件 <%'|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ASPWizard Copyright ?1999-2001 >>>>>>>'|>>>>>>>>&g

前两天有人问怎么取得一个目录下的文件,下面就是例子

<%@ Language=VBScript %><%'================================================================'函数名称:FileList'函数功能:列出目录下所有文件'主要参数说明:'1--FolderUrl     虚拟路径  不可为空'2----FileExName    文件扩展名'函数返回值:收文记录'=====================================================

经常看见有人问如何得到客户端环境,在这里列出 IE5 所支持的所有server端变量.

server|变量|客户端 以下是MSDN (1999年4月版)提供的 IE5 所支持的所有server端变量部分变量在以前的版本中不支持,而且在以后的版本中可能会有变化(这是Microsoft的原话) Variable Description ALL_HTTP All HTTP headers sent by the client. ALL_RAW Retrieves all headers in the raw-form. The difference between ALL_RAW and

昨天有人问如何用asp进行base64加密,这个就是

加密 <%     OPTION EXPLICIT     const BASE_64_MAP_INIT ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"     dim nl     ' zero based arrays     dim Base64EncMap(63)     dim Base64DecMap(127)      ' must be called before using

早上有人问什么判断一个盘上是否有文件,我想这样就可以了。可能是太烦了些

<%  dim objfolder  dim objfso  dim j    set fso=server.CreateObject("scripting.filesystemobject")  set objfolder=fso.GetFolder("d:/")  if  objfolder.size>0 then      j=0      for each objfile in objfolder.files          j=j+1