申明什么变量可以给网页doc.frames的每桢赋值?(50分)

  • 主题发起人 主题发起人 ImageEn
  • 开始时间 开始时间
I

ImageEn

Unregistered / Unconfirmed
GUEST, unregistred user!
申明什么变量可以给网页doc.frames的每桢赋值?如果一个网页doc,其中包括多个桢doc.frames,我想创建doc.frames个桢的doc子桢的实例,并赋值给它,这样做为什么不行呢?谢谢。
var
i:integer;
j:olevariant;
doc,doc:ihtmldocument2;//我想根据doc.frames的数量创建多个实例doc
frameele:ihtmlframescollection2;
oneframe:Ihtmlwindow2;
spdisp:idispatch;
begin
doc:=webbrowser1.document as ihtmldocument2;
frameele:=doc.frames;
for i:= 0 to frameele.length-1 do begin
j:=i;
spDisp:=Frameele.item(j);
if SUCCEEDED(spDisp.QueryInterface(IHTMLWindow2 ,oneframe))then
doc:=oneframe.document;//这样直接赋值可以吗?
end;
end;
 
ihtmldocument2只是一个指针
要想赋值,要用从内存中加载的方式
procedure SetHtml(const WebBrowser:TWebBrowser; const Html: string);
var
Stream: IStream;
hHTMLText: HGLOBAL;
psi: IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then Exit;

hHTMLText := GlobalAlloc(GPTR, Length(Html) + 1);
if 0 = hHTMLText then RaiseLastWin32Error;

CopyMemory(Pointer(hHTMLText),
PChar(Html), Length(Html));

OleCheck(CreateStreamOnHGlobal
(hHTMLText, True, Stream));
try
OleCheck(WebBrowser.Document.
QueryInterface(IPersistStreamInit, psi));
try
OleCheck(psi.InitNew);
OleCheck(psi.Load(Stream));
finally
psi := nil;
end;
finally
Stream := nil;
end;
end;

//读HTML
function GetHtml(const WebBrowser:TWebBrowser): string;
const
BufSize = $10000;
var
Size: Int64;
Stream: IStream;
hHTMLText: HGLOBAL;
psi: IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then Exit;

OleCheck(WebBrowser.Document.QueryInterface
(IPersistStreamInit, psi));
try
//OleCheck(psi.GetSizeMax(Size));
hHTMLText := GlobalAlloc(GPTR, BufSize);
if 0 = hHTMLText then RaiseLastWin32Error;

OleCheck(CreateStreamOnHGlobal(hHTMLText,
True, Stream));
try
OleCheck(psi.Save(Stream, False));

Size := StrLen(PChar(hHTMLText));
SetLength(Result, Size);
CopyMemory(PChar(Result), Pointer(hHTMLText), Size);
finally
Stream := nil;
end;
finally
psi := nil;
end;
end;
 
这样看起来很复杂,申明tWebBrowser的数组变量可行吗?

WebBrowser:=oneframe.document;//这样直接赋值可以吗?
 
我只能说,你几乎是完全不懂webbrowser的用法,慢慢学吧
document 和webbrowser是完全不同的接口idispatch,和指针有根本区别
 
后退
顶部