我有一个MFC activeX从本地机器运行良好,但是当我在服务器上(在局域网上)尝试使用时,我得到一个异常,即该对象没有方法AboutBox(例如)。 这就是我调用方法的方法: 的document.all( 'CTRL1')AboutBox的(); AboutBox的方法来自activeX的Ctrl类。他有那种方法。我在idl文件中注意到一些奇怪的事情:方法AboutBox没有在控件中声明,但是其他一些地方 - idl文件在下面,请建议。 谢谢,Nahum。
这是idl:
[ uuid(E0D6BB50-57F3-4C0D-9163-CCC0AEC87EF4), version(1.0),
control ]
library nsip_ax_10Lib
{
importlib(STDOLE_TLB);
// Primary dispatch interface for Cnsip_ax_10Ctrl
[
uuid(16C6DE45-B481-4795-AFBA-BE64E1CEF9AA)
]
dispinterface _Dnsip_ax_10
{
properties:
methods:
[id(DISPID_ABOUTBOX)] void AboutBox();
[id(1)] BYTE try2(void);
};
// Event dispatch interface for Cnsip_ax_10Ctrl
[
uuid(871F4F0A-3333-4FDF-A53F-CFB581D15596)
]
dispinterface _Dnsip_ax_10Events
{
properties:
// Event interface has no properties
methods:
};
// Class information for Cnsip_ax_10Ctrl
[
uuid(E228C560-FA68-48E6-850F-B1167515C920)
]
coclass nsip_ax_10
{
[default] dispinterface _Dnsip_ax_10;
[default, source] dispinterface _Dnsip_ax_10Events;
};
};
用于加载activeX的HTML代码:
<OBJECT CLASSID="CLSID:871F4F0A-3333-4FDF-A53F-CFB581D15596"
CODEBASE="nsip.CAB#version=1,0,0,1"
ID="Ctrl1"
name="Ctrl1"></OBJECT>
答案 0 :(得分:0)
<强> CLASSID =&#34; CLSID:871F4F0A-3333-4FDF-A53F-CFB581D15596 强>&#34;
ActiveX控件类ID是IDL文件中的最后一个,即
CLASSID="CLSID:E228C560-FA68-48E6-850F-B1167515C920"
我从代码中想到的是你的应用程序不是 指向对象标记中CAB文件的完整服务器路径。
CODEBASE="nsip.CAB"
提供ActiveX cab的完整路径。