Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Andere Seite im IE aufrufen... (https://www.delphipraxis.net/34865-andere-seite-im-ie-aufrufen.html)

hibbert 29. Nov 2004 14:45


Andere Seite im IE aufrufen...
 
Hi,
ich habe den Quelltext einer HTML Seite aus dem IE ausgelesen (Siehe hier)

Nun habe ich einige Quelltext Teile ausgetauscht und den Quelltext auf Festplatte gespeichert als HTML. Nun soll der IE diese abgespeicherte Seite aufrufen. Diese soll aber im gleichen IE Fenster geöffnet werden.

thx hibbert

fkerber 29. Nov 2004 14:49

Re: Andere Seite im IE aufrufen...
 
Hi!

In dem Quelltext von Swissdelphicenter wird WB.LocationURL verwendet.
Vielleicht lässt sich der die Adresse der lokalen Datei zuweisen und er lädt sie dann?


Ciao Frederic

hibbert 29. Nov 2004 15:34

Re: Andere Seite im IE aufrufen...
 
Zitat:

Zitat von fkerber
Hi!

In dem Quelltext von Swissdelphicenter wird WB.LocationURL verwendet.
Vielleicht lässt sich der die Adresse der lokalen Datei zuweisen und er lädt sie dann?


Ciao Frederic

Der compiler sagt, dass der Linkenseite nichts zugewiesen werden kann...

dizzy 29. Nov 2004 15:35

Re: Andere Seite im IE aufrufen...
 
TWebbrowser.Navigate2(url: String);

Ist F1 kaputt? ;)

hibbert 29. Nov 2004 15:58

Re: Andere Seite im IE aufrufen...
 
F1 ist nicht kaputt....
Code:
wb.Navigate2(getcurrentdir+'\test.htm');
Zitat:

Zitat von Compiler
[Fehler] Unit1.pas(97): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen

Zitat:

Zitat von F1
Delphi-Syntax:

procedure Navigate2(var URL: OleVariant); overload;
procedure Navigate2(var URL: OleVariant; var Flags: OleVariant); overload;
procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; var TargetFrameName: OleVariant); overload;
procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; var TargetFrameName: OleVariant; var PostData: OleVariant); overload;

procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; var TargetFrameName: OleVariant; var PostData: OleVariant; var Headers: OleVariant); overload;

hilft mir net wirklich weiter.

Ich lese ja den Quelltext aus einem IE fenster aus und nicht aus meiner Anwendung, also muss ich ja dem IE sagen, dass er dorthin navigieren soll, doch das funzt net so wie es soll....

hibbert

dizzy 29. Nov 2004 16:24

Re: Andere Seite im IE aufrufen...
 
Delphi-Quellcode:
procedure TWebBrowser.Navigate2(var URL: OleVariant);
begin
  DefaultInterface.Navigate2(URL, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;
Das macht TWebBrowser bei einem Navigate2. "DefaultInterface" ist ein IWebbrowser2, und EmptyParam ist in der Unit "OleCtrls" deklariert. Also musst du nurnoch deine URL in einen OleVariant bekommen, und kannst via Interface navigieren.
Zu beachten wäre evtl. noch, dass lokale Zugriffe als URL meiste diese Form haben:
"file:///c/verzeichnis/datei.ext", und nicht "c:\verzeichnis\datei.ext", wobei ich glaube dass der IE mit beidem klar kommt.

Ein QT könnte also so aussehen (vorausgesetzt das Interface ist bereits abgeholt):
Delphi-Quellcode:
uses OleCtrls;
.
.
.
var
  url: OleVariant;
.
.
url := 'file:///c/verzeichnis/datei.ext';
WebBrowserInterface.Navigate2(url, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
Und dabei habe ich noch nie mit OleVariants gearbeitet, noch nie mit Interfaces oder gar mit einem externen IE-Fenster. Das war jetzt alles nur Recherche via F1 + VCL/RTL-Sourcen wühlen... ;)

hibbert 29. Nov 2004 16:36

Re: Andere Seite im IE aufrufen...
 
ok, vielen dank, doch nun bleibt noch ein kleines Problem:
wenn ich nun die Procedure ausführe, werden alle offenen Browser angesprochen, auch mein Firefox.

Kann ich das irgnedwie auf ein Spezielles Fenster anwenden ?

thx hibbert

dizzy 29. Nov 2004 17:01

Re: Andere Seite im IE aufrufen...
 
Mit dem Code der schweizer Kollegen holst du dir auch den HTML-Text aller offenen Browserinstanzen ab. Steht sogar im Titel ;).
Und in selbigem sieht man auch wie man durch alle durchgeht, und einzeln ansprechen kann. In einer ähnlichen Schleife kannst du dir dann das benötigte raussuchen. Als Suchkriterium könnte man z.B. die aktuelle URL nehmen. Die speicherst du dir dann beim Abholen der HTML-Texte für jede Instanz, und kannst dann über einen Vergleich wieder herausfinden welche der Instanzen die benötigte ist.

Okay, dann nehmen wir das MSDN noch zur Hand:
IWebBrowser2.get_LocationURL -> Damit bekommst du die aktuelle URL der aktuellen Browserinstanz raus.

Ist allerdings alles völlig ungetestet, und ich hab damit wie gesagt auch noch nix gemacht. Von daher keine 100%-Garantie ;).


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz