Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Prozess/InternetExplorer schliessen
Kyra
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Prozess/InternetExplorer schliessen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Pulpapex
myCSharp.de - Member



Dabei seit:
Beiträge: 939
Herkunft: Rostock

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Kyra
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Funktioniert leider noch nicht!

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Kyra
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Hat sich erledigt:-)

beantworten | zitieren | melden

Hallo, Problem hat sich erledigt, hatte vergessen, die Referenz auch in der Klasse einzubinden, vielen Danke nochmal:-)
private Nachricht | Beiträge des Benutzers
nba
myCSharp.de - Member



Dabei seit:
Beiträge: 24

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Pulpapex
myCSharp.de - Member



Dabei seit:
Beiträge: 939
Herkunft: Rostock

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers