Danke marabu,
habe das Problem noch nicht lößen können:
hier bekomme ich eine AccessViolation..
Delphi-Quellcode:
function GetFrameDoc(doc: IHTMLDocument2; v: OleVariant): IHTMLDocument2;
var
win: IHTMLWindow2;
u: IUnknown;
ec: IHTMLElementCollection;
begin
u := doc.frames.item(v);
// AccessViolation ! :(
if Assigned(u)
and Succeeded(u.QueryInterface(IHTMLWindow2, win))
then Result := win.Document
else Result :=
nil;
end;
.. genauso wie hier:
Delphi-Quellcode:
function GetBrowserForFrame(Doc: IHTMLDocument2; nFrame: Integer): IWebBrowser2;
//Thanks to Rik Barker
//returns an interface to the frame's browser
var
pContainer: IOLEContainer;
enumerator:
ActiveX.IEnumUnknown;
nFetched: PLongInt;
unkFrame: IUnknown;
hr: HRESULT;
begin
Result :=
nil;
nFetched :=
nil;
// Cast the page as an OLE container
pContainer := Doc
as IOleContainer;
// Get an enumerator for the frames on the page
hr := pContainer.EnumObjects(OLECONTF_EMBEDDINGS
or OLECONTF_OTHERS, enumerator);
// AccessViolation ! :(
if hr <> S_OK
then
begin
pContainer._Release;
Exit;
end;
// Now skip to the frame we're interested in
enumerator.Skip(nFrame);
// and get the frame as IUnknown
enumerator.Next(1,unkFrame, nFetched);
// Now QI the frame for a WebBrowser Interface - I'm not entirely
// sure this is necessary, but COM never ceases to surprise me
unkframe.QueryInterface(IID_IWebBrowser2, Result);
end;
Alle Seiten des Framesets liegen unter der gleichen Adresse, von da sollte die
AV nicht kommen..
aber ich habe ja noch ein paar Seiten vor mir..