WSC脚本部件技术:利用Javascript编写ActiveX控件

作者:Rimifon 来源:无忧脚本 时间:2008-05-05 13:13:00 

一个简单的例子:

将如下代码另存为.wsc文件,并右键“注册”(卸载时右键“不注册”)。

<Component>
<registration ProgId=hello.world />
<public>
        <property name=testStr />
        <method name=add>
                <parameter name=x />
                <parameter name=y />
        </method>
</public>
<script>
var testStr="默认值";
function add(x, y)
{
        return x+" + "+y+" = "+(x+y);
}
</script>
</Component>

然后可以通过new ActiveXObject("hello.world")的方法来调用该控件。
例如:(另存为.js后双击运行。)

var com=new ActiveXObject("hello.world");
WSH.Echo(com.testStr);
WSH.Echo(com.add(84,25));

这样就可以将javascript代码嵌入到其他编程语言中。

另外,不注册也可以调用该控件,例如:(另存为.js后双击运行。)

var com=GetObject("script:http://www.zope.org/Members/Rimifon/ZopeTest/Sample.wsc");
WSH.Echo(com.testStr);
WSH.Echo(com.add(84,25));

注意的是,JS的GetObject方法因为安全限制,在IE下可能是不能运行的。

还可以使用

regsvr32 http://www.zope.org/Members/Rimifon/ZopeTest/Sample.wsc

指令对远程脚本部件进行本地注册,也可以使用:

regsvr32 http://www.zope.org/Members/Rimifon/ZopeTest/Sample.wsc /u

进行卸载。

wsc脚本部件注册的控件,受安全限制,因此可能并不适合应用在IE上,比较适合应用在asp或其他编程语言中。 如果服务器注册了该脚本部件,则可以使用:

Set Obj = Server.CreateObject("Hello.World")

如果服务器没有注册该脚本部件,则可以这样:

Set Obj = Server.GetObject("script:http://www.zope.org/Members/Rimifon/ZopeTest/Sample.wsc")

这种方式(这里的URL可以换成本地脚本部件文件所在的绝对地址)。

运用实例:

 改写了编程浪子 的js无组件上传,在本地创建远程脚本组件。

<html><head><meta http-equiv="Content-Type"content="text/html;charset=gb2312">
<title>测试远程控件调用</title><%
Dim strInfo
If Request.ServerVariables("Request_Method") = "POST" Then
        'Set Upload = Server.CreateObject("Rimifon.Upload")
        Set Upload = GetObject("script:http://www.zope.org/Members/Rimifon/ZopeTest/Upload.wsc")
        Upload.ReadForm()
        strInfo = Upload.SaveFile(".")
        Upload.Dispose()
        Set Upload = Nothing
End If
Function Info()
        Info = strInfo
End Function
%></head><body>
<font color="red"><%=Info()%></font>
<form method=post enctype="multipart/form-data">
<input name="upFile" type="file"><input type="submit">
</form></body></html>

 远程调用在Wind2000下测试通过。自己的2003下失败了:(。

本地调用测试通过。

如果服务器没有注册的话,推荐使用本地调用的方法:

Set Upload = GetObject("script:"+Server.MapPath("Upload.wsc"))

这样能防止网络故障而出现的错误。

标签:wsc,脚本,acticex,控件,js
0
投稿

猜你喜欢

  • 面向对象CSS FAQ[译]

    2009-10-27 15:59:00
  • asp下实现代码的“运行代码”“复制代码”“保存代码”功能源码

    2011-04-14 10:39:00
  • MySQL 基本概念

    2011-09-10 16:22:34
  • PHP利用ChatGPT实现轻松创建用户注册页面

    2023-05-25 09:22:16
  • Html的几个小技巧

    2011-04-29 14:02:00
  • 2008圣诞节网站特色Logo不完全点评

    2008-12-25 18:35:00
  • Excute后都需要返回一个RecordSet对象吗?

    2009-10-28 18:28:00
  • JavaScript框架比较:选择器

    2010-04-20 14:48:00
  • HTTP状态码

    2009-09-21 12:46:00
  • 两行代码实现的QQ窗口抖动效果

    2008-09-06 12:34:00
  • Oracle存储过程入门学习基本语法

    2009-03-04 11:00:00
  • 亚马逊购物用户体验分析 (二)

    2009-10-25 12:48:00
  • JavaScript的私有成员

    2009-03-25 20:45:00
  • 最新google pr查询接口

    2012-03-12 20:00:39
  • Dreamweaver制作网页11种技巧详解

    2007-11-05 14:00:00
  • 开心网上input输入框研究

    2009-03-06 12:52:00
  • SQL SERVER的字段类型介绍

    2008-05-23 13:27:00
  • 纯手工打造CSS像素画

    2009-03-09 12:57:00
  • asp如何显示自定义随机信息?

    2010-06-08 09:39:00
  • MySQL Order By索引优化

    2011-01-04 19:56:00
  • asp之家 网络编程 m.aspxhome.com