批处理之家's Archiver

myzam 发表于 2011-3-10 23:37

利用regsvr32注册和卸载wsc格式的com组件文件

[i=s] 本帖最后由 pcl_test 于 2017-3-24 08:20 编辑 [/i]

看着网上满天飞舞的regsvr32,总感觉它离我们很远。下面通过一个vbs的例子来看看它的作用。
vbs编程就是要调用系统自带的com部件(公用接口部件)。这个com是什么东西?看看下面具体的例子吧。
我们自己创建一个com部件就清楚了。
1---把下面的代码保存为test.wsc,并右键选择注册它。这时你就知道网上满天飞的regsvr32是干什么用的了。[code]<component id="component1">
<registration progid="component.zhao"/>
<public>
  <comment>hello</comment>
  <method name="math"/>      
</public>
<script language="vbscript">
  function math()
     msgbox "hello world"
  end function
</script>
</component>
[/code]完成注册后,你就在你的系统里面注册了一个com部件。
怎么卸载?呵呵,你用下面的命令看看regsvr32 /?
记住你注册的com部件叫 component.zhao
2----接下了。我们来调用这个com
把下面的代码保存为 comtest.vbs点击就会显示  hello world.[code]
set my=createobject("component.zhao")
my.math[/code]我的这个例子可以说充分的说明了vbs是怎么调用com的。只是我们平时调用com都是系统自带的吧了。
你用上面的例子也可以创建你的类型库。

最后,你在注册表(通过运行regedit就进入了注册表)中的编辑按钮 输入你刚才注册的com部件的id 就是component.zhao,你执行搜索后就可以找到你注册的这个部件。
如果你删除在注册表中的这个部件,此时你再次点击comtest.vbs 就会报错了,hello world就不再出现了。

[[i] 本帖最后由 myzam 于 2011-3-11 11:06 编辑 [/i]]

wc726842270 发表于 2011-3-12 09:40

VBS真是好冷啊,帮你顶一下一步,知识点真是很清析

myzam 发表于 2011-3-14 23:04

脚本部件的注册方法

要注册脚本部件方法有2
法一:  选中脚本部件文件wsc,右键即可以注册部件,也可以从注册表中删除该部件。
法二:利用cmd
          注册命令:regsvr32 scrobj.dll /i:d:\test.wsc  
          最好用参数 /i:
          从注册表中删除脚本部件:
                           regsvr32 scrobj.dll /u /i:d:\test.wsc

同样要生成类型库也有2法:
法一    选中wsc文件,右键即可。
法二    命令方法
               rundll32 scrobj.dll  GenerateTypeLib -file:d:\my.tlb  -url:d:\test.wsc -name:mytlb -guid:{12345678-1234-1234-1234-123456781234}
      注意:1--首先要注册脚本部件,这时生成的类型库才会注册到注册表中。
                 2--guid即global uniform identify全局统一id,这是你以后在编程时调用类型库的id。注意数字位数结构,
                 并且是16进制。

myzam 发表于 2011-3-15 21:26

回复 1楼 的帖子

在同一个wsc文件中,第一个com调用第二个com。
wsc文件如下:[code]<package>
<component id="component1">
<registration
progid="component.zhao"
/>

<public>
  <property name="math"/>
</public>
<script language="vbscript">
function  math
set math=createcomponent("component2")
end function
</script>
</component>

<component id="component2">
<registration
progid="component.wei"
/>

<public>
  <property name="add"/>
</public>
<script language="vbscript">
function add(n)
add=n+100
end function
</script>
</component>
</package>[/code]右键注册上述控件后,在vbs中调用该控件的方法如下:[code]set my=createobject("component.zhao")
msgbox my.math.add(10)[/code]或[code]set my=createobject("component.zhao")
set my1=my.math
msgbox my1.add(10)[/code]

通过这个实验,应该明白vbs里面的语法  A.B.C是怎么回事了吧。

[[i] 本帖最后由 myzam 于 2011-3-15 21:31 编辑 [/i]]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.