我写了一个用于IE的ActiveX控件,在自己的调试机器上可以正常使用,但是注册到别人的电脑上之后,在IE里控件无法显示,脚本错误提示:"对象不支持此属性或方法:Player1.MonitorNum"。请问如何解决?测试用的页面如下:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<TITLE>对象 Player 的 ATL 7.0 测试页</TITLE>
</HEAD>
<BODY>
<OBJECT NAME="Player1" CLASSID="CLSID:ABECDF3A-96BF-428F-AD4F-F6A0E60992E1"></OBJECT>
<OBJECT NAME="Player2" CLASSID="CLSID:ABECDF3A-96BF-428F-AD4F-F6A0E60992E1"></OBJECT>
<OBJECT NAME="Player3" CLASSID="CLSID:ABECDF3A-96BF-428F-AD4F-F6A0E60992E1"></OBJECT>
<OBJECT NAME="Player4" CLASSID="CLSID:ABECDF3A-96BF-428F-AD4F-F6A0E60992E1"></OBJECT>

<Script Language="VBScript">
Player1.MonitorNum = 4
Player1.IPAddr = "192.168.0.1"
Player1.PlayerID = 0

Player2.MonitorNum = 4
Player2.IPAddr = "192.168.0.1"
Player2.PlayerID = 1

Player3.MonitorNum = 4
Player3.IPAddr = "192.168.0.1"
Player3.PlayerID = 2

Player4.MonitorNum = 4
Player4.IPAddr = "192.168.0.1"
Player4.PlayerID = 3
</Script>
</BODY>
</HTML>

解决方案 »

  1.   

    还是你的com依赖的文件没有全部拷过去!
    用studio的depends看看
      

  2.   

    用到其他Dll了吗?
    注册了吗?
      

  3.   

    页面的控件其实没有实例化成功!用depends看看你的控件还需要什么dll支持库,另外需要把你控件中使用到的其他ocx或是类型库(如果使用到的话)也拷贝到目标机器!
      

  4.   

    你给别人的是debug版还是release版?
      

  5.   

    看看注册表,查查这个CLSID对应的组件程序(dll或exe)是不是你的组件
      

  6.   

    to longj(龙九):我给别人的也是debug版,同时拷了mfc71d.dll和mscrt71d.dll我的控件里动态装入了两个DLL,那两个DLL中的一个又静态装入另一个DLL。但是我用depend查看和在代码中检查,能发现的DLL都已经拷过去了,还是不行,郁闷。to skyron(我编程,我存在): 怎么检查?我也是第一次做ActiveX,很多东西不熟悉,请多多指教了。
      

  7.   

    检查一下,你的VC是否打了SP5扑丁,如果是,须考一个文件,mfco42d.dll和到控件所在目录。如果别人的机子上没有MFC,须考更多的文件。注意,所有文件须从自己机上考(更保险)。
      

  8.   

    HKEY_CLASSES_ROOT->CLSID->{你的组件对应的CLSID}
    InprocServer32中有路径信息,看看这个路径与预想的是否一致
    正如SchoolBoy() 说的,如果你的vc大了sp5,别人的机器上没有的话,注册的时候不会出错(弹出正确注册的对话框),但实际上注册没有成功