delphi WebBrowser獲取iframe頁面內(nèi)容
作者:admin 來源:未知 日期:2010-10-16 9:26:36 人氣: 標(biāo)簽:
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.btn2Click(Sender: TObject);
var
Index: Integer;
Document: IHTMLDocument2;
FrameIdx: OleVariant;
FrameDis: IDispatch;
FrameWin: IHTMLWindow2;
begin
while wb1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages;
if wb1.Document = nil then Exit;
if wb1.Document.QueryInterface(IHTMLDocument2, Document) <> 0 then Exit;
if Document.frames.length > 0 then
begin
for Index := 0 to Document.frames.length - 1 do
begin
FrameIdx := Index;
FrameDis := Document.frames.item(FrameIdx);
if FrameDis.QueryInterface(IHTMLWindow2, FrameWin) <> 0 then Exit;
mmo1.Lines.Add(#13#10+'==============Frame '+ IntToStr(Index)+ '=================='+#13#10);
mmo1.Lines.Add(FrameWin.document.body.outerHTML+#13#10);
end;
end;
end;
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。