it-swarm.com.de

So öffnen Sie den Standardbrowser in C #

Ich entwerfe eine kleine C # -Anwendung und darin befindet sich ein Webbrowser. Ich habe derzeit alle meine Standardeinstellungen auf meinem Computer, dass Google Chrome mein Standardbrowser ist. Wenn ich jedoch auf einen Link in meiner Anwendung klicke, um ihn in einem neuen Fenster zu öffnen, wird Internet Explorer geöffnet. Gibt es eine Möglichkeit, diese Links stattdessen im Standardbrowser zu öffnen? Oder ist auf meinem Computer etwas nicht in Ordnung?

Mein Problem ist, dass ich einen Webbrowser in der Anwendung habe. Gehen Sie also zu google und geben Sie "stack overflow" ein. Klicken Sie mit der rechten Maustaste auf den ersten Link und klicken Sie auf "In neuem Fenster öffnen". Es wird in IE anstelle von Chrome geöffnet . Ist dies etwas, das ich falsch codiert habe, oder ist eine Einstellung auf meinem Computer nicht korrekt

=== BEARBEITEN ===

Das ist wirklich nervig. Mir ist bereits bekannt, dass es sich bei dem Browser um IE handelt, aber ich hatte schon vorher funktioniert. Als ich auf einen Link geklickt habe, wurde dieser in Chrom geöffnet. Ich habe damals die Entwicklung mithilfe von Sharp entwickelt, da ich C # Express nicht zum Starten aufrufen konnte. Ich habe eine neue Windows-Installation durchgeführt und da ich in meiner Anwendung nicht zu weit fortgeschritten war, entschied ich mich, von vorne zu beginnen, und jetzt habe ich dieses Problem. Deshalb bin ich nicht sicher, ob es mein Computer ist oder nicht. Warum startet IE den gesamten Browser, wenn auf einen Link geklickt wird, anstatt den neuen Link einfach im Standardbrowser zu öffnen?

215
Sean

Du kannst einfach schreiben 

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

EDIT: Das WebBrowser-Steuerelement ist eine eingebettete Kopie des IE.
Daher werden alle darin enthaltenen Links in IE geöffnet.

Um dieses Verhalten zu ändern, können Sie das Ereignis Navigating behandeln.

439
SLaks
public static void GoToSite(string url)
{
     System.Diagnostics.Process.Start(url);
}

das sollte dein Problem lösen

33
user2193090

Für diejenigen, die diese Frage im Dotnet-Kern finden. Ich habe eine Lösung gefunden hier

Code:

private void OpenUrl(string url)
{
    try
    {
        Process.Start(url);
    }
    catch
    {
        // hack because of this: https://github.com/dotnet/corefx/issues/10361
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
        {
            url = url.Replace("&", "^&");
            Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
        {
            Process.Start("xdg-open", url);
        }
        else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
        {
            Process.Start("open", url);
        }
        else
        {
            throw;
        }
    }
}
23
Joel Harkes

Haben Sie Processas hier erwähnt versucht: http://msdn.Microsoft.com/de-de/library/system.diagnostics.process.aspx ?

Du könntest benutzen

Process myProcess = new Process();

try
{
    // true is the default, but it is important not to set it to false
    myProcess.StartInfo.UseShellExecute = true; 
    myProcess.StartInfo.FileName = "http://some.domain.tld/bla";
    myProcess.Start();
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}
12
Andreas

Schauen Sie sich die GeckoFX-Steuerung an.

GeckoFX ist eine Open-Source-Komponente Das macht es leicht, Mozilla einzubetten Gecko (Firefox) in jedes .NET Windows Formularanwendung. In sauber geschrieben, vollständig kommentiertes C #, GeckoFX ist das perfekter Ersatz für die Standardeinstellung Internet Explorer-basierter Webbrowser Steuerung.

5
THE DOCTOR

Dies öffnete den Standard für mich:

System.Diagnostics.Process.Start(e.LinkText.ToString());
3
Xero Phane

Versuchen Sie es auf die alte Schule;)

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

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

1
Moh.Kirkuk

aktualisieren Sie die Registrierung mit der aktuellen Version des Explorers
@ "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"

public enum BrowserEmulationVersion
{
    Default = 0,
    Version7 = 7000,
    Version8 = 8000,
    Version8Standards = 8888,
    Version9 = 9000,
    Version9Standards = 9999,
    Version10 = 10000,
    Version10Standards = 10001,
    Version11 = 11000,
    Version11Edge = 11001
}

key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord);
0
dfgv

Dynamisch öffnen

string addres= "Print/" + Id + ".htm";
           System.Diagnostics.Process.Start(Path.Combine(Environment.CurrentDirectory, addres));

In UWP:

await Launcher.LaunchUriAsync(new Uri("http://google.com"));
0
Kibernetik

dotnet core gibt einen Fehler aus, wenn wir Process.Start(URL) verwenden. Der folgende Code funktioniert in dotnet core. Sie können anstelle von Chrome einen beliebigen Browser hinzufügen.

var processes = Process.GetProcessesByName("Chrome");
var path  = processes.FirstOrDefault()?.MainModule?.FileName;
Process.Start(path,  url);
0