关于在本地vbscript脚本中创建activex对象实例 ( 积分: 100 )

  • 主题发起人 主题发起人 atoi
  • 开始时间 开始时间
A

atoi

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个activex control, 功能跟下载软件的IE右键菜单的“使用XXX下载”的功能差不多。控件在vb中测试可以正常工作,但是在html中使用vbscript的CreateObject函数却无法创建对象。
请问我要做什么样的操作才能使得CreateObject可以创建对象?

人家Netants, 影印传送带的那个activex对象就可以被创建。

[red]我现在想知道的是,在本地vbscript脚本中,怎样才能够使得我的com组件能用CreateObject创建[/red]
 
我有一个activex control, 功能跟下载软件的IE右键菜单的“使用XXX下载”的功能差不多。控件在vb中测试可以正常工作,但是在html中使用vbscript的CreateObject函数却无法创建对象。
请问我要做什么样的操作才能使得CreateObject可以创建对象?

人家Netants, 影印传送带的那个activex对象就可以被创建。

[red]我现在想知道的是,在本地vbscript脚本中,怎样才能够使得我的com组件能用CreateObject创建[/red]
 
用上面的方法应该可以创建的,可能是你还没注册。在“开始”-“运行”里输入:
regsvr32 DLL名
进行注册
 
指定本地脚本语言,还有可能需要权限
 
To wzwcn: 我说了“控件在vb中测试可以正常工作”

继续寻找高手…………
 
如果只是传键对象的例子,flashget下面的.htm就是
 
条件1:
这个对象必须是“双接口”的
条件2:
IE的安全机制必须允许它运行
 
对于条件一,在delphi中
new Automation可以满足要求
new ComObject则不满足要求
 
将Activex,打包成CAB文件放在网页上自动下载到客户
Internet 软件分发单位是“软件包”,它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)
的 CAB 文件 (.cab) 所组成。一个分发单位也可以包含软件组件,如 ActiveX 控件 (.ocx)、.dll
文件、.exe 文件、Java 类文件或小程序。当 Web 页上 OBJECT 元素的 CODEBASE 特性引用包含
?.inf 文件的 CAB 文件时,Internet Explorer 3.0 和更新的版本将自动把 CAB 文件作为软件分发单位。


第一步:创建一个inf文件:
?INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。
一个INF文件就捆绑了CAB压缩文件所有的必须文件。 缺省情况下,
与现有硬盘中文件版本号相同的文件不被下载。
要了解有关INF文件及其选项(包括如何创建独立于平台的INF文件)的详细情况,
请参考平台软件开发工具包(Platform SDK,)的设置和系统管理服务(Setup and System Management Services)
部分的/Setup API/Overview/INF Files目录下的内容。
下面就以我自己写的一个videoweb.dll为例子。在videoweb.dll中使用到:tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.
video.inf的例子:
;inf file for videoweb.dll
[version]
;version signature(same fot both NT and Win95) do not remove
signature="$SCHICAGO$"
AdvancedINF=2.0

[Add.Code]
VideoWeb.dll=VideoWeb.dll
tdiio.dll=tdiio.dll
Decoder.dll=Decoder.dll
encoder.dll=encoder.dll
camer.ini=camer.ini
drvio.ini=drvio.ini
castel.ini=castel.ini
user.ini=user.ini
tdiio.ini=tdiio.ini

;needed DLL
[tdiio.dll]
file-win32-x86=thiscab
FileVersion=2,1,701,1
DestDir=11
RegisterServer=yes

[Decoder.dll]
file-win32-x86=thiscab
FileVersion=
DestDir=11
RegisterServer=yes

[encoder.dll]
file-win32-x86=thiscab
DestDir=11
RegisterServer=yes

;needed ini
[camer.ini]
file-win32-x86=thiscab
DestDir=10

[tdiio.ini]
file-win32-x86=thiscab
DestDir=10

[user.ini]
file-win32-x86=thiscab
DestDir=10


[drvio.ini]
file-win32-x86=thiscab
DestDir=10

[castel.ini]
file-win32-x86=thiscab
DestDir=10
;ActiveX dll
[VideoWeb.dll]
file-win32-x86=thiscab
clsid={4BDA0AA3-2164-44B7-8A88-208A145F51DC}
FileVersion=2, 0, 0, 1
DestDir=11
RegisterServer=yes

;end of INF file

下面解说一下上面的一些关键的东西:
关键字"file-win32-x86" 指定平台是 x86。
file-win32-x86也可以指向一个url上的dll。比如:file-win32-x86=http://www.castelsz.com/xxx/xxx.dll
FileVersion:版本号(点右键看属性就可以得到,也可以没有)
DestDir:指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32;
?????? 10 规定为窗口目录、WINDOWS或者WINNT。如果没有指定DestDir(典型情况),则代码从固定的OCCACHE目录装载。
clsid:指的是要安装控件的CLSID
RegisterServer:表示是否需要注册。
当然以上仅仅是在internet上分发软件时一个很简单的inf文件,还有更复杂的inf文件。请看SDK。

第二步:把video.inf, tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini,
camer.ini,drivo.ini.放在一个文件夹中。
第三步:开始制作cab文件,我是用IExpress工具制作的(可以到wwww.newhua.com去下载pIExpres2工具),其实改工具就是使用了:cabarc这个VC5.0中带一个工具。
???? 1:选择创建新的自解压指令文件。
???? 2:选择仅创建压缩文件(ActiveX安装)
???? 3:点击添加把你要供别人下载的文件添加
???? 4:点击浏览 输入*.cab文件的存放地址(包含文件名)
???? 5:就随便了
好了制作完成。
现在在你的网页中使用该控件,当别人访问你的网页时,如果他的机子上没有你的控件,浏览器就会自动下载安装。因为你的控件可能没有获得签名
因此得在你的浏览器中把浏览器的安全级别降低。在internet 工具中选择安全,选择自定义。找到下载未签名的ActiveX控件。选择其下面的提示或者启用。
在网页中插入:

<OBJECT classid=clsid:4BDA0AA3-2164-44B7-8A88-208A145F51DC
codebase="video.cab#version=2,0,0,1"
data=data:application/x-oleobject;base64,owraS2Qht0SKiCCKFF9R3AADAAA1SgAAZzQAAA==
id=Video1 style="HEIGHT: 507px; WIDTH: 718px"></OBJECT>

该句.
注意:得把*.cab 文件你和的网页放在同一目录下。或者在codebase中指定*.cab的路径。
 
To 张鸿林: 谢谢你。

怀疑其他人有没有看清问题。
 
后退
顶部