控件仅仅实现了一个GetVersion函数
dispinterface _DWebAPP
/////////.xxxxxx.dil
{
properties:
methods:
[id(1)] LONG GetVersion(void);
};
///////////////xxx.cpp
// 调度映射
BEGIN_DISPATCH_MAP(CWebAPPCtrl, COleControl)
DISP_FUNCTION_ID(CWebAPPCtrl, "GetVersion", dispidGetVersion, GetVersion, VT_I4, VTS_NONE)
END_DISPATCH_MAP()
LONG CWebAPPCtrl::GetVersion(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加调度处理程序代码
return 1001;
}
//////////////////xxxx.h
// 调度和事件 ID
public:
enum {
};
protected:
LONG GetVersion(void);
enum
{
dispidGetVersion = 1L
};
之后自己写了一段HTML测试
<HTML>
<input id="input1" value="CallActiveX" type="button" onclick="CallOcx()">
<br>
<OBJECT id="IXinApp"
classid="clsid:0C2D24CC-C60E-4D70-8750-266063E2C324"
width="0" height="0"
codebase="" />
</HTML>
<script language="JavaScript" type="text/JavaScript">
function CallOcx()
{
//--初始化、装载样式文件
alert(IXinApp.GetVersion());
}
</script>
测试结果为
win732位系统下,完全没问题
但是换成WIN764位以后,问题来了。
注册ocx的时候
甭管我使用和32位一样的,直接用regsvr32注册。
还是用网上搜到的,放到sysWOW64文件夹下面,在注册。
都会提示我,注册成功。
但是当我加载页面的时候,不会给我弹出alert。控件应该是加载失败了。
求助各位大侠啊!我该如何更改,头疼了一下午了。。。
补充下。我在WIN764位下查了下注册表。已经存在了
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{0C2D24CC-C60E-4D70-8750-266063E2C324}]
.....
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{0C2D24CC-C60E-4D70-8750-266063E2C324}\Version]
@="1.0"
数据都是对的。