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;

原文地址:https://www.cnblogs.com/honeynm/p/3994242.html