如何在网页里面调用我写的ocx?
我弄了个简单的ocx功能,是mfc的,添加了一个方法,如下
BOOL CMyactiveCtrl::CheckProcess()
{
// TODO: Add your dispatch handler code here
AfxMessageBox("aaa");
return TRUE;
}
使用vc6自带的activex control test container测试也能正常调用这个函数,但是,用了网页却不行,网页代码如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<object classid="clsid:6A55AAB2-9E1B-40F3-912D-9B2F9402DC90" codebase="test.CAB" id="test"></object>
<script type="text/javascript">
function add()
{
var abc=test.CheckProcess();
}
add();
</script>
</head>
<body>
fdsfdsdddddddddddddddddddd
</body>
</html>
提示:对象不支持此属性或方法。
我感觉应该是网页有问题,请问该怎么写?
有的说生成的ocx需要打包成cab,有的说不用,我不管是否打包cab,测试都不成功。
各位帮帮忙,我是第一次写activex ,分数不够,可以重新开帖加分。
[解决办法]
你是否是在MyactiveLib中右击_DMyactive中添加方法CheckProcess的
调用的话,像这样调用也行
<HTML>
<HEAD>
<TITLE>New Page</TITLE>
<script language="javascript">
function doTest()
{
var ret = FuckATL1. CheckProcess();
alert(ret);
}
</script>
</HEAD>
<BODY>
<OBJECT ID="FuckATL1" CLASSID="CLSID:19CE2D6B-DE5E-4343-9F9B-
D37053304AC2">
</OBJECT>
<input type="button" value="测试加法" id="btnOK" onclick="doTest
();"></input>
</BODY>
</HTML>
[解决办法]
网页运行ActiveX控件,一般要做成 ActiveX Control
然后创建数字证书,(使用MS提供的,SELFCERT.EXE)
再下来是对控件文件(.OCX或CAB)进行数字签名(搜索一下 signcode)。
最后才能发布到网页。格式是
<Object Id=xxx classId=xxxx codebase=xxx.ocx>
[解决办法]
楼主性子好急,解决问题是最枯燥的事,急也没用的。
你可以打开IE的开发者窗口,在脚本调试器里检查一下test对象的object属性,是不是有值,是不是有你的方法存在。这是为了确保控件已经正确创建了。
[解决办法]
<html> <head> <script type="text/javascript" language="javascript"> function show(){ var BarID = GetBarIDCtrl.GetBarID(); alert("Your BarId:\n" + BarID); } </script> </head> <object id="GetBarIDCtrl" width="0" height="0" classid="clsid:5504ca17-b2db-4488-8993-873071b6da9f" CODEBASE="http://127.0.0.1/GetBarID.cab"> </object> <body onload="show()"> </body></html>
[解决办法]
看你ocx是用什么开发的?VS05的话可能是因为缺少支持库,而且release 的也会缺。而且要vcredist_x86.exe的支持。
------解决方案--------------------
看一下是否是网页加载顺序的问题,先在网页中写一个按钮调用一下这个方法,看看OCX 这个对象是否能正确的被JS 识别。
如果可以了,再进行下一步 网页load 即执行你的方法的事情