AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi WebBrowser/EmbeddedWB: Zugriff auf den Document eines Frames
Thema durchsuchen
Ansicht
Themen-Optionen

WebBrowser/EmbeddedWB: Zugriff auf den Document eines Frames

Ein Thema von resolution · begonnen am 28. Aug 2008 · letzter Beitrag vom 28. Aug 2008
Antwort Antwort
Benutzerbild von resolution
resolution

Registriert seit: 4. Jan 2005
Ort: Saarbrücken
52 Beiträge
 
Delphi 7 Enterprise
 
#1

WebBrowser/EmbeddedWB: Zugriff auf den Document eines Frames

  Alt 28. Aug 2008, 17:09
Hallo

sitze seit einigen Tagen vor dem Problem, dass ich Zugriff auf ein Frame aus einem Frameset benötige und zwar als IHTMLDocument2

Irgendwie bekomme ich das absolut nicht hin und mittlerweile hab ich völlig den Überblick verloren im IHTML Interface und den OleObjects *seufz*

Benutze zur Zeit den EmbeddedWB von Bsalsa und Delphi 2007..

Würde mir jemand helfen? Hab überall gesucht aber entweder mit den falschen Begriffen oder es findet sich wirklich nichts dazu..

Sourceschnippsel wie ich von einem Webbrowser.Document zu einem Frame as IHTMLDocument2 komme wäre prima, oder ein Link der das Thema behandelt auch

Danke und liebe Grüße!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: WebBrowser/EmbeddedWB: Zugriff auf den Document eines Fr

  Alt 28. Aug 2008, 17:26
Hallo,

die Suche nach Hier im Forum suchenGetFrameDoc sollte dir einige Code-Beispiele liefern, die sich für dein Problem anpassen lassen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von resolution
resolution

Registriert seit: 4. Jan 2005
Ort: Saarbrücken
52 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: WebBrowser/EmbeddedWB: Zugriff auf den Document eines Fr

  Alt 28. Aug 2008, 17:51
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..
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: WebBrowser/EmbeddedWB: Zugriff auf den Document eines Fr

  Alt 28. Aug 2008, 18:18
Hast du mal den Wert von doc beim Eintritt in die Funktion GetFrameDoc überprüft?

Beachte auch, dass Frames beliebig verschachtelt sein können: ShowFrames()
  Mit Zitat antworten Zitat
Benutzerbild von resolution
resolution

Registriert seit: 4. Jan 2005
Ort: Saarbrücken
52 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: WebBrowser/EmbeddedWB: Zugriff auf den Document eines Fr

  Alt 28. Aug 2008, 22:40
Das Funktioniert jetzt prima, aber ich weiss nicht wieso die AV nichtmehr kommt..
So ein kurzer Quelltext und ich weiss nicht wirklich was er macht.. Unknown interface .. waaaaahhh *lach*
Aber verständlicher als die GetBrowserForFrame-func..

Folgendes Funktioniert:

Delphi-Quellcode:
function GetFrameDoc(doc: IHTMLDocument2;v: OleVariant): IHTMLDocument2;
var
  win: IHTMLWindow2;
  u: IUnknown;
begin
  u := doc.frames.item(v);
  if Assigned(u)
  and Succeeded(u.QueryInterface(IHTMLWindow2, win))
    then Result := win.Document
    else Result := nil;
end;
Dankeschön
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz