快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

ASP与ACTIVEX控件交互实战(一)

要害字:ASP,ActiveX控件,数字签名,安全

ActiveX控件运行在客户端。我们可以获得客户端的一些信息,如IC卡的信息,客户端的验证等等。但是ActiveX控件也有许多缺点:客户端的部署很困难,如客户端不能准确下载,下载了以后不能准确执行,下载的时候需要设置IE的安全级别等等。

更多的时候,我都在使用COM组件来扩展ASP的功能。正确地说,是服务端运行的Activex Dll组件。使用Server.CreateObject(“工程名.类名”)即可完成对组件的调用。这种方法问题很少,只要组件中以PUBLIC对外暴露方式既可。但是,有时候我们必须使用ACTIVEX 控件(*.OCX)嵌入到网页中执行来获取客户端的信息。这就有了许许多多的一些问题。

这是我们需要解决的N个问题(从简朴到难)

1. 如何从服务端获取数据,传递到ActiveX控件中。

1) 初始化时使用参数绑定

2) 运行时得到数据

2. ActiveX控件得到客户端的信息,如何传递到服务端。

3. 安全性

1) 数字签名

2) 使用IOBJSAFE接口

好了,我们开始实例学习。

这个功能演示了如何制作一个简朴的控件,并嵌入网页中执行。

工作环境:WINXP+VB6+IE6

我的IE安全设置为安全级别-中。所有的Activex选项设为启用。



打开vb6,新建ActiveX控件工程。

工程名:fOcx,用户控件名:UC1

为了方便,我们使用ActiveX控件接口向导…,菜单->外接程序->外接程序治理器->VB 6 ActiveX控件接口向导。确定即可。



打开ActiveX控件接口向导,下一步,对于可用名称和选定名称我们默认下一步,新建自定义成员,GetInfo类型:属性,下一步,共有方式中选择我们刚才添加的GetInfo,映射到控件选择TxtInfo,成员选择Text,下一步直到完成。代码窗口中会生成一些我们不需要的,删除,剩下的代码如下:

Option Explicit

\\\'注重!不要删除或修改下列被注释的行!

\\\'MappingInfo=txtinfo,txtinfo,-1,Text

Public Property Get GetInfo() As String

GetInfo = txtinfo.Text

End Property



Public Property Let GetInfo(ByVal New_GetInfo As String)

txtinfo.Text() = New_GetInfo

PropertyChanged "GetInfo"

End Property



\\\'从存贮器中加载属性值

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)



txtinfo.Text = PropBag.ReadProperty("GetInfo", "Text1")

End Sub



\\\'将属性值写到存储器

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)



Call PropBag.WriteProperty("GetInfo", txtinfo.Text, "Text1")

End Sub



OK,好了,我们编译成fOcx.ocx文件,然后F5直接运行,VB会打开一个测试页。如下:

E:Program FilesMicrosoft Visual StudioVB98UC1.html

同时,打开你的IE浏览器,看到了吧,你做的控件出现在了这个测试页中。

你可以打开测试页,可以看到ClsID,比如:890D1028-298B-45CF-9A64-6ED5A5BACBC9



因为VB编译的时候已经完成注册.所以无法模仿客户端没有安装该控件时出现的提示.

我们继承

使用regsvr32 F:csdn_vbcom+_activeXsample1fOcx.ocx ?Cu卸载

或者

打开注册表,在HKEY_CLASSES_ROOTCLSID下面找到

890D1028-298B-45CF-9A64-6ED5A5BACBC9项,删除之,当然这种方法还有项存在而没有删除干净.


此时浏览http://yang/uc1.htm,由于IE中ActiveX设置为启动,所以,控件会显示出来。

下载后的ocx到哪里去了???

打开该目录(可能有所不同)E:WINDOWS.0Downloaded Program Files,看到了吧,fOcx.UC1文件在这个目录下.

原理:客户端下载该控件后,自动注册,然后放在上述这个目录下.这时我们可以打开注册表看看CLSID,呵呵,还是以前的那个.

我们可以右键看看fOcx.UC1的属性,看看相关内容,这里显示了该OCX所依靠的所有文件.所以,你的OCX尽量减少使用高级控件或者第三方的控件,否则,下载就有些问题了.


假如IE中关于ActiveX的选项设为禁用,那么浏览器就会出现对话框”当前安全设置禁止运行该页中的ActiveX控件.因此可能无法准确显示该页”,这个就需要其他的方法来处理了。

一般用户默认的都是禁用ActiveX选项,所以让用户自己设置不太合适。
返回类别: 教程
上一教程: 批量判定域名是否被注册程序代码
下一教程: 在ASP中利用COM组件开发WEB应用程序

您可以阅读与"ASP与ACTIVEX控件交互实战(一)"相关的教程:
· ASP与ACTIVEX控件交互实战(二)
· ASP与ACTIVEX控件交互实战(三)
· ASP中ACTIVEX控件的内嵌及调用
· XMLHTTP ACTIVEX对象的访问ASP区段变量的其他方式
· ASP中使用Office2000中的图表控件
    微笑服务 优质保证 索取样品