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
投稿

猜你喜欢

  • jupyter notebook更换皮肤主题的实现

    2023-04-13 07:31:38
  • 使用python计算三角形的斜边例子

    2023-01-25 01:33:19
  • python 服务器运行代码报错ModuleNotFoundError的解决办法

    2021-03-23 00:39:08
  • python web框架 django wsgi原理解析

    2021-11-21 02:44:59
  • 纯JavaScript实现的分页插件实例

    2024-06-09 12:08:26
  • asp如何验证信用卡是否可用?

    2010-06-10 18:39:00
  • MySQL 函数索引的优化方案

    2024-01-23 03:13:36
  • python中的eval函数使用实例

    2021-06-20 00:34:07
  • 简约的实现——服装网站设计

    2009-03-06 12:43:00
  • 谈切图优化加速图片显示—淘宝实例

    2008-01-30 12:24:00
  • Python实现Event回调机制的方法

    2021-04-10 12:33:29
  • 详解Python中图像边缘检测算法的实现

    2021-02-08 09:18:27
  • python入门课程第四讲之内置数据类型有哪些

    2023-05-06 22:09:34
  • JavaScript使用Promise实现并发请求数限制

    2024-04-16 09:54:44
  • 利用GAE&Google Gears做了一个简单的AJAX代理

    2009-04-29 12:42:00
  • javascript读取xml

    2024-04-23 09:30:13
  • sql获取存储过程返回数据过程解析

    2024-01-20 07:52:47
  • python实现kNN算法

    2023-01-24 13:58:06
  • 在PyCharm中批量查找及替换的方法

    2023-05-29 17:15:13
  • Python素数检测的方法

    2021-02-13 13:07:30
  • asp之家 网络编程 m.aspxhome.com