Öffnen Sie eine URL in Windows Forms


77

Ich versuche, über Windows Form einen Link zur Website meines Unternehmens bereitzustellen. Ich möchte mich gut benehmen und mit dem bevorzugten Browser des Benutzers starten.

Wie kann eine URL im Standardbrowser des Benutzers über eine Windows Forms-Anwendung am besten geöffnet werden?


1
Vielleicht fügen sie der Standardbibliothek eine API hinzu. Ich höre, dass diese Web-Sache groß sein wird.
Colonel Panic

Antworten:


134

Dieser Artikel führt Sie durch den Artikel .

Kurze Antwort:

ProcessStartInfo sInfo = new ProcessStartInfo("http://mysite.com/");  
Process.Start(sInfo);

Präzise und genau. +1
iMatoria

2
Warum erhalte ich eine Win32Exception wurde nicht behandelt: "Anwendung nicht gefunden", wenn ich dies versuche? Ich bin auf Win7 64bit. Vielen Dank
Tommy B.

Der Artikel-Link ist defekt und ein Kätzchen leidet: (
Windgate

35
using System.Diagnostics;

Process.Start("http://www.google.com/");

Dieser Ansatz hat bei mir funktioniert, aber mir könnte etwas Wichtiges fehlen.


11

Hier ist das Beste aus beiden Welten:

Dim sInfo As New ProcessStartInfo("http://www.mysite.com")

Try
     Process.Start(sInfo)
Catch ex As Exception
     Process.Start("iexplore.exe", sInfo.FileName)
End Try

Ich habe festgestellt, dass die von Blorgbeard bereitgestellte Antwort fehlschlägt, wenn eine Desktopanwendung auf einem Windows 8-Gerät ausgeführt wird. Bis zu Camillos Punkt sollten Sie versuchen, dies mit der Standardbrowseranwendung des Benutzers zu öffnen. Wenn die Browseranwendung jedoch nicht zugewiesen ist, wird eine nicht behandelte Ausnahme ausgelöst.

Ich poste dies als Antwort, da es die Ausnahme behandelt, während immer noch versucht wird, den Link im Standardbrowser zu öffnen.


6

Ich mag den hier beschriebenen Ansatz . Dabei werden mögliche Ausnahmen und Verzögerungen beim Starten des Browsers berücksichtigt.

Stellen Sie für bewährte Methoden sicher, dass Sie die Ausnahme nicht nur ignorieren, sondern abfangen und eine entsprechende Aktion ausführen (benachrichtigen Sie beispielsweise den Benutzer, dass das Öffnen des Browsers zum Navigieren zur URL fehlgeschlagen ist).


2
Stimmt, und das sollten Sie immer berücksichtigen. Ihre Methode, nur Ausnahmen zu schlucken, lässt mich jedoch zusammenzucken. In diesem speziellen Fall können Sie möglicherweise Argumente dafür vorbringen, aber ich hätte immer noch keinen leeren "catch" -Block. Es ist zu einfach, ein Problem auf diese Weise vollständig zu maskieren.
Adrian Clark

Du hast recht. Ich habe nicht über mögliche Ausnahmen nachgedacht (und ich hätte es tun sollen), bis ich den Beitrag gesehen habe.
Sumrak

1

Für diejenigen, die eine "Win32Exception: Das System kann die angegebene Datei nicht finden" erhalten

Dies sollte die Arbeit erledigen:

ProcessStartInfo psInfo = new ProcessStartInfo
{
   FileName = "https://www.google.com",
   UseShellExecute = true
};
Process.Start(psInfo);

UseShellExecute wird hier weiter beschrieben

Für mich war das Problem aufgrund der .NET - Laufzeit als descriped hier


-3

Der obige Ansatz ist perfekt. Ich möchte diesen Ansatz empfehlen, um Ihre Parameter zu übergeben.

Process mypr;
mypr = Process.Start("iexplore.exe", "pass the name of website");

1
Dies sollte ein Kommentar sein, keine Antwort.
Austin Henley

Bitte verwenden Sie einen geeigneten Schreibstil und schreiben Sie hier nicht in "Chat-Sprache" ...
Spontifixus

1
Ich habe mich gefragt, warum Sie diesen Ansatz für überlegen halten. Es scheint mir, dass dies nicht dem entspricht, was ursprünglich beabsichtigt war und was im bevorzugten Browser des Benutzers geöffnet war. Diese Methode stellt die ausführbare Browserdatei bereit und wird daher immer im IE geöffnet, selbst wenn der Benutzer Chrome oder Firefox als bevorzugten Webbrowser angegeben hat.
Adrian Clark

4
-1 wegen Internet Explorer. Ich hasse es, wenn eine dumme Anwendung den Internet Explorer öffnet und ich nur darauf warte, dass sie gestartet wird, damit ich das verdammte Ding schließen und die URL in einem richtigen Webbrowser öffnen kann . Diese Art von Dingen ist ein sofortiger Grund zu der Annahme, dass der Antrag von Zwölfjährigen codiert wurde.
Camilo Martin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.