我用vb写的ocx控件,用.net2003的打包成.CAB包。用IE访问时,CAB包能够下载到本地临时文件夹,但无法安装显示,我试了多次都是这样。请教各位,这是怎么回事???用vb打的包也是一样,只有在我的本地机器上才可以用,因为本地的已经有了注册的,通过别的机器防问时就不能显示了。还有一个就是我编写的控件需要解决一个问题,就是需要做一个查询,但是这个查询会需要比较长的时间,需要在控件上增加一个强制中止的操作和经过的时间秒数显示,经过测试用timer控件做不到,因为在程序运行查询处时,其他的都不能操作,如果用多线程方式来处理的话,会出现IE死机退出。请各位高手赐教。

解决方案 »

  1.   

    <object classid="clsid:……" codebase="txttemp.cab#version=1,0,0,0" width="100" height="80"  codebase="*.ocx  VISIBILITY: hidden>

    </object>
      

  2.   

    对开发的程序(制作CAB)进行签名,并允许网站中使用 
    http://blog.csdn.net/Newrocky/archive/2004/11/17/184317.aspx
      

  3.   

    发布后的html文件中的内容是这样的,这个应该没有什么问题吧:
    <html>
    <head>
    <title>查询分析</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <link rel="stylesheet" href="css.css" type="text/css">
    </head><script language="javascript">function ConnectServer(){
    var args=ConnectServer.arguments; //headPath,theme,subTheme
    NewMasterProj.InitializeMaster(args[0],args[1],args[2],args[3]);
    }
    function ClickTheme(){
    var args=ClickTheme.arguments; //headPath,theme,subTheme
    NewMasterProj.LabelClick(args[0],args[1]);
    }
    function openwin() {
           window.open("page.html","","align=center,width=200,height=100");
    }
    function js_callpage(htmlurl,width,height){
    var focusok;
    var newwin=window.open(htmlurl,"newWin","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,top=2,left=2,width="+width+",height="+height);
    if(focusok){
    newwin.focus();
    }
    }
    </script>
    <%
    str = request.QueryString("str")
    'if Session("UserName") <> "" then
    %>
    <STYLE type="text/css">.unnamed1 {
     BORDER-RIGHT: #000099 1px solid; BORDER-TOP: #3399ff 1px solid; BORDER-LEFT: #0099ff 1px solid; BORDER-BOTTOM: #003399 1px solid
    }
    .unnamed2 {
     BORDER-RIGHT: #000099 1px solid; BORDER-TOP: #3399ff 0px solid; BORDER-LEFT: #0099ff 0px solid; BORDER-BOTTOM: #003399 0px solid
    }
    </STYLE>
    <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" onload = "ConnectServer('http://10.1.32.222/queryServer/','queryService.asmx?wsdl', 'conQuery/', '测试')"><table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>
        <OBJECT ID="ComDlg32"
    CLASSID="CLSID:F9043C85-F6F2-101A-A3C9-08002B2F49FB"
    CODEBASE="ComDlg32Cab.CAB#version=6,0,84,18"
    height="0"
    width="0">
    </OBJECT><OBJECT ID="ForeCast"
    CLASSID="CLSID:0D4B4BE8-6ABB-4A05-B4CB-CE22A76D4EBE"
    CODEBASE="ForeCastCab.CAB#version=1,0,0,2"
    height="0"
    width="0">
    </OBJECT><OBJECT ID="Outlier"
    CLASSID="CLSID:556FFB2A-0622-4E8B-BE5E-B572A0245732"
    CODEBASE="OutlierCab.CAB#version=1,0,0,1"
    height="0"
    width="0">
    </OBJECT><OBJECT ID="Performance"
    CLASSID="CLSID:5C2748AD-5995-4BB9-AE7B-D40AC70743D6"
    CODEBASE="PerformanceCab.CAB#version=1,0,0,1"
    height="0"
    width="0">
    </OBJECT>
    <OBJECT ID="NewMasterProj"
    CLASSID="CLSID:25C78A90-DA79-4F60-89F7-803D77B61BD8"
    CODEBASE="NewMasterCab.CAB#version=3,0,0,7"
    width="1000"
    height="700">
      <param name="_ExtentX" value="25982">
      <param name="_ExtentY" value="16140">
    </OBJECT>
    </td>
      </tr>
    </table>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr> 
        <td bgcolor="#007fbf" width="40%" height="23"> 
          <div align="right"><img src="images/boco-logo.gif" width="22" height="22"></div>
        </td>
        <td bgcolor="#007fbf" width="60%" height="23"><span class="font1">最佳分辨率1024×768 
          </span></td>
      </tr>
    </table>
    </body>
          <% 
    'else  
    ' response.redirect "default.asp"   
    ' end if   
    %>  
    </html>
      

  4.   

    用VB.net做吧,直接在程序里引用
      

  5.   

    关于计算查询时间的问题,可以尝试以下办法:
    在执行查询语句前,
    dim tmpTime as single
    tmptime=Timer  '系统函数,可以取出当前时间,精确到毫秒级
    语句执行完后,tmptime=timer-tmptime
    这时的tmptime就是执行所花的时间了
      

  6.   

    不能那样分开,因为是通过SOAP来调用webservers查询的。
      

  7.   

    第二个问题可以加一句
    DOEVENTS
    解决
      

  8.   

    那就只有用Timer控件计时了,可以用doevents或者用多线程的方式