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

原创 2004年08月09日 01:14:00

龙卷风

关键字: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选项设为启用。

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

打开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 Files/Microsoft Visual Studio/VB98/UC1.html

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

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

 

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

我们继续

使用regsvr32 F:/csdn_vb/com+_activeX/sample1/fOcx.ocx –u卸载

或者

打开注册表,HKEY_CLASSES_ROOT/CLSID下面找到

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

 

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

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

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

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

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

 

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

一般用户默认的都是禁用ActiveX选项,所以让用户自己设置不太合适。

 

未完待续

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

龙卷风 关键字:ASP,ActiveX控件,数字签名,安全 ActiveX控件运行在客户端。我们可以获得客户端的一些信息,如IC卡的信息,客户端的验证等等。但是ActiveX控件也有许多缺点:客户...
  • u014739770
  • u014739770
  • 2014年04月24日 12:29
  • 479

使用VS2010 C#开发ActiveX控件

在网上查了一些资料也实际操作了一下,在此自己再作一次详细记录。   功能:将对机具操作的FK.dll封装成fk.ocx,注册后能在网页上对机器操作。 使用Visual Studio 2010 .NET...
  • xiaoao314224236
  • xiaoao314224236
  • 2014年01月23日 09:33
  • 12063

【VS开发】 自己编写一个简单的ActiveX控件——详尽教程

最近开始学ActiveX控件编程,上手不太容易,上网想找相关教程也没合适的,最后还是在师哥的指导下完成了第一个简单控件的开发,现在把开发过程贴出来与大家分享一下~ (环境说明——平台:vs2005;...
  • LG1259156776
  • LG1259156776
  • 2016年07月23日 15:26
  • 4689

Delphi 编写ActiveX控件(OCX控件)的知识和样例

一、ActiveX应用情况简介:                          ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分。ActiveX是微软公司推出的基于...
  • zang141588761
  • zang141588761
  • 2016年04月26日 10:10
  • 1697

多浏览器支持ActiveX控件

浏览器插件总体可以划分为两大阵营,即IE支持的插件以及非IE支持的插件。 本来在Netscape时代,对于浏览器插件是有公用的规范的(NPAPI),一开始所有浏览器都支持该规范,包括IE。后来出于商业...
  • wangzhen209
  • wangzhen209
  • 2016年03月02日 15:18
  • 9494

使用VS2010 C#开发ActiveX控件

在网上查了一些资料也实际操作了一下,在此自己再作一次详细记录。   功能:将对机具操作的FK.dll封装成fk.ocx,注册后能在网页上对机器操作。 使用Visual Studio 2010 .NET...
  • wxw_317
  • wxw_317
  • 2015年10月28日 13:50
  • 2880

VS 2012 C#ActiveX控件开发总结

ActiveX 控件以前也叫做OLE 控件或OCX 控件,它是一些软件组件或对象,可以将其插入到WEB 网页或其它应用程序中。使用ActiveX 插件,可以轻松方便的在Web 页中插入多媒体效果、交互...
  • lucky51222
  • lucky51222
  • 2016年04月19日 10:43
  • 7003

ActiveX控件全屏显示

http://bbs.csdn.net/topics/310053242 (一) 第一种方式,转载 思路: 双击窗体 1。把嵌入在ActiveX里有窗体“跳”出来 2。隐藏任...
  • chenscmail
  • chenscmail
  • 2013年03月04日 21:20
  • 4364

修改activeX控件的uuid

公司里的大部分工作都是在原来的jichushang
  • beiguoshuo
  • beiguoshuo
  • 2014年08月25日 14:45
  • 1201

基于VS2013的ActiveX控件实现

1.ActiveX的基本概念          ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等...
  • liuyi1207164339
  • liuyi1207164339
  • 2015年07月05日 15:10
  • 6616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP与ActiveX控件交互实战(一)
举报原因:
原因补充:

(最多只允许输入30个字)