1、IHTMLWindow2 -> IWebBrowser2
var wd:IHTMLWindow2; iw:IWebBrowser2; begin (wd as IServiceProvider).QueryService(IID_IWebBrowserApp,IWebBrowser2,Iw); end;
2、IHTMLDocument2.frames.item(i) -> IHTMLWindow2
var dsp:IDispatch; wd:IHTMLWindow2; doc:IHTMLDocument2; begin dsp:=doc.frames.item(i); wd:= dsp as IHTMLWindow2; end;
3、获得框架的IWebBrowser2接口
function TForm1.GetIw(Dsp: IDispatch; FrameNo: Integer): IWebBrowser2; var OleCnt: IOleContainer; enum: IEnumUnknown; unk: IUnknown; Fetched: PLongint; begin try Fetched := nil; OleCnt := Dsp as IOleContainer; //DSP可以是IHTMLDocument2.Document OleCnt.EnumObjects(Integer(OLECONTF_EMBEDDINGS), enum); enum.Skip(FrameNo); enum.Next(OLECONTF_EMBEDDINGS, unk, Fetched); Result := unk as IWebbrowser2; Except Result:=nil; end; end;