【问题标题】:How to redirect to a Website from a Button click in a desktop app WPF? [duplicate]如何从桌面应用程序 WPF 中的按钮单击重定向到网站? [复制]
【发布时间】:2022-01-21 20:50:07
【问题描述】:

我看到每个人都推荐以下内容:

        private void RegisterBtn(object sender, RoutedEventArgs e)
        {
            System.Diagnostics.Process.Start("https://website.com/");
        }

但我收到以下错误:

“系统找不到指定的文件。” System.ComponentModel.Win32Exception"

我想让按钮在默认浏览器中打开一个窗口。

Ps:这是一个用 C# 编码的 WPF 桌面应用程序

【问题讨论】:

  • 看这里:您是否安装了浏览器并设置了默认浏览器? docs.microsoft.com/en-us/troubleshoot/dotnet/csharp/…
  • @NawedNabiZada 是的,我将 Google Chrome 作为我的默认浏览器。但不管怎样,即使用户没有设置默认浏览器,有没有一种从 WPF 中打开网站的简单方法?
  • 这是最简单的方法。请阅读整篇文章,它解释了为什么会出现该异常
  • @NawedNabiZada 使用本文中的 try-catch 表示我没有浏览器,但我有。所以我唯一相信它可能是与这个 HKEY_CLASSES_ROOT 相关的东西。但即便如此,这似乎不是从 WPF 打开网站的可靠方式,因为即使我有浏览器并设置为默认值,它也不起作用......
  • 如果您在“运行”对话框 (Windows+R) 或 cmd 窗口中输入https://website.com/:是否有效?

标签: c# wpf


【解决方案1】:

所以,我找到了这个答案:How to open a web page from WPF?

这正是我所问的,Idk 如何将这个答案链接到这个答案。 但这里是代码:

private void RegisterBtn(object sender, RoutedEventArgs e)
{
    string url = "https://www.website.com";
    System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
}

【讨论】:

    【解决方案2】:

    尝试显式使用explorer.exe
    System.Diagnostics.Process.Start("explorer.exe", url);
    或者你可以在 try catch 块中使用它:

    try
    {
      System.Diagnostics.Process.Start(url);
    }
    catch (Win32Exception ex)
    {
      System.Diagnostics.Process.Start("IExplore.exe", url);
    }
    

    【讨论】:

    • 目标电脑没有IExplorer怎么办?
    • 您正试图在 try catch 的 catch 部分启动一个新进程。请解释一下这是个好主意吗?
    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多