[C#] C #의 기본 브라우저에서 여는 방법

작은 C # 응용 프로그램을 디자인하고 있으며 웹 브라우저가 있습니다. 나는 현재 내 컴퓨터의 모든 기본값을 Google 크롬이 기본 브라우저라고 말하지만 응용 프로그램에서 링크를 클릭하여 새 창에서 열면 인터넷 탐색기가 열립니다. 대신 기본 브라우저에서 이러한 링크를 열 수있는 방법이 있습니까? 아니면 내 컴퓨터에 문제가 있습니까?

내 문제는 응용 프로그램에 웹 브라우저가 있으므로 Google로 이동하여 “스택 오버플로”를 입력하고 첫 번째 링크를 마우스 오른쪽 버튼으로 클릭하고 “새 창에서 열기”를 클릭하면 Chrome 대신 IE에서 열립니다. 이 코드가 잘못 코딩되었거나 컴퓨터에 설정이 올바르지 않은 것입니까

=== 편집 ===

이것은 정말로 성가신 일입니다. 브라우저가 IE임을 이미 알고 있지만 이전에는 제대로 작동했습니다. 링크를 클릭하면 크롬으로 열립니다. 나는 c #을 시작할 수 없기 때문에 응용 프로그램을 만들기 위해 날카로운 개발을 사용하고있었습니다. 나는 새로운 Windows 설치를했는데 응용 프로그램에서 너무 멀지 않아서 다시 시작하기로 결정했으며 이제는이 문제가 있습니다. 그것이 내 컴퓨터인지 아닌지 확실하지 않은 이유입니다. 기본 브라우저에서 단순히 새 링크를 열지 않고 링크를 클릭하면 IE가 전체 브라우저를 시작하는 이유는 무엇입니까?



답변

당신은 단지 쓸 수 있습니다

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

편집 : WebBrowser컨트롤은 IE의 포함 된 복사본입니다.
따라서 그 안의 모든 링크는 IE에서 열립니다.

이 동작을 변경하기 위해 Navigating이벤트를 처리 할 수 ​​있습니다 .


답변

dotnet core 에서이 질문을 찾는 사람들을 위해. 여기서 해결책을 찾았습니다 .

암호:

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;
        }
    }
}


답변

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

문제를 해결해야합니다


답변

http://msdn.microsoft.com/de-de/library/system.diagnostics.process.aspx에서Process 언급 했습니까 ?

당신은 사용할 수 있습니다

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);
}


답변

상기 살펴보세요 GeckoFX 제어 .

GeckoFX는 오픈 소스 구성 요소로 Mozilla Gecko (Firefox)를 모든 .NET Windows Forms 응용 프로그램에 쉽게 포함시킬 수 있습니다. 완전히 주석 처리 된 C #으로 작성된 GeckoFX는 기본 Internet Explorer 기반 WebBrowser 컨트롤을 완벽하게 대체합니다.


답변

구식 방법으로 시도해보십시오.)

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

사용 : openit ( “www.google.com”);


답변

많은 연구를 한 후에 나는 주어진 대답의 대부분이 닷넷 코어에서 작동하지 않는다고 생각합니다. 1 System.Diagnostics.Process.Start("http://google.com").; -닷넷 코어와 작동하지 않습니다

2. 작동하지만 기본 브라우저가 크롬 인 경우 새 창 열기를 차단합니다

 myProcess.StartInfo.UseShellExecute = true;
    myProcess.StartInfo.FileName = "http://some.domain.tld/bla";
    myProcess.Start();

아래는 가장 간단하며 모든 시나리오에서 작동합니다.

Process.Start("explorer", url);