我弄了个简单的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 ,分数不够,可以重新开帖加分。

解决方案 »

  1.   

    你是否是在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>
      

  2.   

    二楼的,你做成了按钮的形式,其实我是想一打开就加载这个activex,然后对本机进行一些判断,如果满足条件,允许用户继续浏览,不满足,就进行跳转。我能保证添加的方法绝对没错,我用ActvxDoc.exe也能查看到这个方法,还有clsid也肯定没错。但是在网页里面调用就是步行。没人知道了吗?
      

  3.   

    网页运行ActiveX控件,一般要做成 ActiveX Control然后创建数字证书,(使用MS提供的,SELFCERT.EXE)再下来是对控件文件(.OCX或CAB)进行数字签名(搜索一下 signcode)。最后才能发布到网页。格式是
    <Object Id=xxx classId=xxxx codebase=xxx.ocx>
      

  4.   

    偌大的csdn,现在怎么了,就没人给解决一下?
      

  5.   

    楼主性子好急,解决问题是最枯燥的事,急也没用的。你可以打开IE的开发者窗口,在脚本调试器里检查一下test对象的object属性,是不是有值,是不是有你的方法存在。这是为了确保控件已经正确创建了。
      

  6.   

    <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>
      

  7.   

    看你ocx是用什么开发的?VS05的话可能是因为缺少支持库,而且release 的也会缺。而且要vcredist_x86.exe的支持。
      

  8.   

    看一下是否是网页加载顺序的问题,先在网页中写一个按钮调用一下这个方法,看看OCX 这个对象是否能正确的被JS 识别。如果可以了,再进行下一步 网页load 即执行你的方法的事情