Laden...

Prozess/InternetExplorer schliessen

Erstellt von Kyra vor 19 Jahren Letzter Beitrag vor 19 Jahren 4.809 Views
K
Kyra Themenstarter:in
3 Beiträge seit 2005
vor 19 Jahren
Prozess/InternetExplorer schliessen

Hallo,
könnt ihr mir vielleicht bei folgendem problem weiterhelfen?
mit folgendem Code öffne ich eine Webseite im InternetExplorer

ProcessStartInfo psi = new ProcessStartInfo ("iexplore.exe", pfadDerSeite);
Process.Start(psi);

wird die methode wieder aufgerufen, möchte ich keinen neuen Prozess starten, sondern im gleichen fenster eine andere website anzeigen bzw. den explorer schließen und wieder öffnen. gibt es da eine möglichkeit?

vielen dank im voraus für antworten,
Kyra

P
939 Beiträge seit 2003
vor 19 Jahren

Process.Start liefert ein Process-Objekt p zurück. Mit p.Close kann man den Prozess beenden.

Man kann sich auch eine COM-Interop-DLL erstellen. Die in das Projekt eingebunden und der IE lässt sich direkt steuern.
Beispiel, der IE ohne Menü, Adressleiste, Toolbar - nur die Webseite:


InternetExplorer ie = new InternetExplorer();
ie.Width = 400;
ie.Height = 500;
ie.Top = 0;
ie.Left = 100;
				
ie.FullScreen = false;
ie.MenuBar = false;
ie.Resizable = true;
ie.StatusBar = false;
ie.ToolBar = 0;

// Seite im IE aufrufen, 
// r ist ein Hilfsobjekt für die nicht benötigten Parameter.
object r = null;
ie.Navigate("http://www.heise.de", ref r, ref r, ref r, ref r);
ie.Visible = true;

Um die COM-Interop-DLL zu erstellen, braucht man das Tool TlbImp.exe aus dem .Net-Framework-SDK. Am besten die Platte durchforsten, ich kann nicht sagen wo man es findet, es müsste aber vorhanden sein.

An der Kommandozeile folgendes eingeben:
TlbImp c:\windows\system32\shdocvw.dll /out:c:\Interop.Shdocvw.dll

Die generierte Dll befindet sich in c:, umkopieren und als Verweis/Referenz ins Projekt einbinden.

Gruss
Pulpapex

K
Kyra Themenstarter:in
3 Beiträge seit 2005
vor 19 Jahren
Funktioniert leider noch nicht!

Erstmal vielen Dank für Deine Antwort.

Einbinden der Referenz hat funktioniert. Es erscheint aber folgende Fehlermeldung:

Der Typ oder Namespace 'InternetExplorer' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis.

Gruß
Kyra

K
Kyra Themenstarter:in
3 Beiträge seit 2005
vor 19 Jahren
Hat sich erledigt:-)

Hallo, Problem hat sich erledigt, hatte vergessen, die Referenz auch in der Klasse einzubinden, vielen Danke nochmal🙂

N
24 Beiträge seit 2005
vor 19 Jahren

Hi,
sehr praktischer Ansatz, allerdings gibt es folgende Meldung:

C:\Programme\Microsoft.NET\SDK\v2.0\Bin>TlbImp c:\windows\system32\shdocvw.dll /
out:c:\Interop.Shdocvw.dll

Microsoft (R) .NET Framework Type Library to Assembly Converter 2.0.40607.16
Copyright (C) Microsoft Corporation. All rights reserved.

TlbImp error: Error occurred while opening type library:
System.ArgumentException: Value does not fall within the expected range.
at TlbImpCode.TlbImpCode.LoadTypeLibEx(String strTypeLibName,
REGKIND regKind, ITypeLib& TypeLib) at TlbImpCode.TlbImpCode.Run(TlbImpOptions options)

Is schon klar was er will, allerdings hat man da ja kein Einfluss drauf.

Hat Jemand eine Idee.

Gruß nba
Webverzeichnis

P
939 Beiträge seit 2003
vor 19 Jahren

Was will er denn? Ich kann die Fehlermeldung auf die Schnell nicht deuten. Du kannst die Interop-Dll auch in VS 2005 generieren lassen. Dazu im Projekt eine Referenz aus dem Dateisystem hinzufügen.

Gruss
Pulpapex