delphi WebBrowser获取iframe页面内容及操作

uses MSHTML, ActiveX;

function GetFrame(FrameNo:Integer):IWebbrowser2;

var

OleContainer:IOleContainer;

enum:IEnumUnknown;

unk:IUnknown;

Fetched:PLongint;

begin

while Form1.wb1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages;

if Assigned(Form1.wb1.document)then

begin

Fetched:= nil;

OleContainer:= Form1.wb1.Document as IOleContainer;

OleContainer.EnumObjects(OLECONTF_EMBEDDINGS,enum);

Enum.Skip(FrameNo);

Enum.Next(OLECONTF_EMBEDDINGS,Unk,Fetched);

Result:=Unk as IWebbrowser2;

end

else Result:=nil;

end;

procedure TForm1.btn3Click(Sender: TObject);

var

doc,frm: IHTMLDocument2;

iw: IWebbrowser2;

i: integer;

begin

doc:=wb1.Document as IHTMLDocument2;

for i:=0 to doc.frames.length-1 do

begin

iw:=GetFrame(i);

frm:=iw.Document as IHTMLDocument2;

mmo1.Lines.Add( '==============Frame '+ IntToStr(i)+ '==================');

mmo1.Lines.Add(frm.body.outerHTML);

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

var

doc: IHTMLDocument2;

frm: IHTMLDocument3;

iw: IWebbrowser2;

i: integer;

begin

doc:=web1.Document as IHTMLDocument2;

i:=0;

iw:=GetFrame(i);

frm:=iw.Document as IHTMLDocument3;

frm.getElementById('switcher_plogin').click;

end;