<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);
VBSscript好象是只能通过progid来创建对象。 不过你可以利用<OBJECT>来使用CLSID创建对象
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);