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;

 

 

 

 

posted on 2013-01-18 11:11  绝对清凉  阅读(308)  评论(0编辑  收藏  举报