180 Stimmen

Wie kann ich eine Webseite aus meiner Anwendung heraus öffnen?

Ich möchte, dass meine WPF-Anwendung den Standardbrowser öffnet und eine bestimmte Webseite aufruft. Wie kann ich das tun?

4voto

lvmeijer Punkte 1004

Sie können eine Webseite nicht aus einer erweiterten Anwendung heraus starten. Dies führt zu einer 0x800004005-Ausnahme, wahrscheinlich weil explorer.exe und der Browser nicht im erweiterten Modus ausgeführt werden.

Um eine Webseite aus einer erweiterten Anwendung in einem nicht erweiterten Webbrowser zu starten, verwenden Sie die Code erstellt von Mike Feng . Ich habe versucht, die URL an lpApplicationName zu übergeben, aber das hat nicht funktioniert. Auch nicht, wenn ich CreateProcessWithTokenW mit lpApplicationName = "explorer.exe" (oder iexplore.exe) und lpCommandLine = url verwende.

Die folgende Umgehung funktioniert: Erstellen Sie ein kleines EXE-Projekt, das eine Aufgabe hat: Process.Start(url), verwenden Sie CreateProcessWithTokenW, um diese EXE auszuführen. Auf meinem Windows 8 RC funktioniert dies gut und öffnet die Webseite in Google Chrome.

2 Stimmen

Voir Kommentar , mit Explorer.exe zum Abheben wird nicht unterstützt: "Leider hat das Windows Shell Team geantwortet, dass das aktuelle Verhalten von "Explorer.exe AppName.exe" ein Fehler ist und in zukünftigen Updates/Versionen von Windows möglicherweise nicht mehr funktioniert. Anwendungen sollten sich nicht darauf verlassen."

4voto

mohkirkuk Punkte 107

Die alte Schule ;)

public static void openit(string x) {
   System.Diagnostics.Process.Start("cmd", "/C start" + " " + x); 
}

Verwendung: openit("www.google.com");

2voto

winsetter Punkte 181

Ich habe die Lösung für dieses Problem, da ich heute ein ähnliches Problem habe.

Angenommen, Sie möchten öffnen http://google.com von einer Anwendung, die mit Administratorrechten läuft:

ProcessStartInfo startInfo = new ProcessStartInfo("iexplore.exe", "http://www.google.com/");
Process.Start(startInfo);

0voto

Vredenik Punkte 13
    string target= "http://www.google.com";
try
{
    System.Diagnostics.Process.Start(target);
}
catch (System.ComponentModel.Win32Exception noBrowser)
{
    if (noBrowser.ErrorCode==-2147467259)
    MessageBox.Show(noBrowser.Message);
}
catch (System.Exception other)
{
    MessageBox.Show(other.Message);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X