1、一个组件是不是只要实现了IDispatch 接口就能在网页上使用?
2、当使用Vbscript的CreateObject()创建一个组件的对象时,参数是不是应该用这个组件的ProgId?

解决方案 »

  1.   

    我试过了。只要实现了IDispatch就能用
    VBSscript好象是只能通过progid来创建对象。 不过你可以利用<OBJECT>来使用CLSID创建对象
      

  2.   

    <OBJECT ID="SafeIe "
        CLASSID="clsid:B5D4581D-ED6A-4905-A267-25BAF7BE79C1"
         codebase="SafeIE.dll#version:1,0,0,1"
        WIDTH=0 HEIGHT=0 VIEWASTEXT>
    </OBJECT>
    <SCRIPT LANGUAGE="VBScript">
    <!--
    sub choose()
    dim obj
    err=0
    On Error Resume Next
    set obj=CreateObject("SafeIE.FiltrateIE.1")
    if err<>0 then
    msgbox "Error!"
    else
    msgbox "Success!"
    end if
    end sub
    choose()
    -->
    </SCRIPT>
    查看注册表safeie.dll的progid是SafeIE.FiltrateIE.1,我写了上面那段代码,但是它总是弹出Error,不知是什么原因
    下面是我用eXescope查看这个dll的结果,应该是实现了IDispatch接口吧
    Dispatch IFiltrateIE; // IFiltrateIE Interface
    GUID={B33AAF8C-4C5E-45F9-884C-A4C7E05F4346};
      function QueryInterface(riid:^GUID; out ppvObj:^^void);
      function AddRef: UI4;
      function Release: UI4;
      function GetTypeInfoCount(out pctinfo:^UINT);
      function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
      function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
      function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);