C# 特定进程的参数,使用 url 打开浏览器

2024-04-07

我正在编写一个应用程序,该应用程序应该通过单击按钮来打开某个进程。但是,用户可以添加新按钮。我使用以下代码来执行单击按钮时启动进程的操作:

        private void StartProcess(string path)
    {
        ProcessStartInfo StartInformation = new ProcessStartInfo();

        StartInformation.FileName = path;

        Process process = Process.Start(StartInformation);

        process.EnableRaisingEvents = true;
    }
    private void ClickFunc(object sender, RoutedEventArgs e)
    {
        if (File.Exists(ProgramPath))
        {
            StartProcess(ProgramPath);
        }
        else
        {
            MessageBox.Show("Specified path does not exist, please try again.", "Bad File Path Error", MessageBoxButton.OK);
        }
    }

我想要完成的是,当用户为网页创建按钮时,它会打开浏览器,然后打开网页。有任何想法吗?

先感谢您!


启动一个进程以使用特定的方式打开浏览器url你可以试试这个:

string url = "http://www.stackoverflow.com";

var process = System.Diagnostics.Process.Start(url);

但有时如果你的浏览器路径有问题,它就无法正常工作。下面的函数为您提供了机器中浏览器的路径。

public static string GetDefaultBrowserPath()
{
    string urlAssociation = @"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http";
    string browserPathKey = @"$BROWSER$\shell\open\command";

    RegistryKey userChoiceKey = null;
    string browserPath = “”;

    try
    {
        //Read default browser path from userChoiceLKey
        userChoiceKey = Registry.CurrentUser.OpenSubKey(urlAssociation + @"\UserChoice", false);

        //If user choice was not found, try machine default
        if (userChoiceKey == null)
        {
            //Read default browser path from Win XP registry key
            var browserKey = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false);

            //If browser path wasn’t found, try Win Vista (and newer) registry key
            if (browserKey == null)
            {
                browserKey =
                Registry.CurrentUser.OpenSubKey(
                urlAssociation, false);
            }
            var path = CleanifyBrowserPath(browserKey.GetValue(null) as string);
            browserKey.Close();
            return path;
        }
        else
        {
            // user defined browser choice was found
            string progId = (userChoiceKey.GetValue("ProgId").ToString());
            userChoiceKey.Close();

            // now look up the path of the executable
            string concreteBrowserKey = browserPathKey.Replace(“$BROWSER$”, progId);
            var kp = Registry.ClassesRoot.OpenSubKey(concreteBrowserKey, false);
            browserPath = CleanifyBrowserPath(kp.GetValue(null) as string);
            kp.Close();
            return browserPath;
        }
    }
    catch(Exception ex)
    {
        return "";  
    }
}

您可以使用浏览器的路径和网站的 url,例如:

string url = "http://www.stackoverflow.com";

var process = System.Diagnostics.Process.Start(GetDefaultBrowserPath(), url);

In the url您可以传递网页链接的字符串。它将打开带有 url 的浏览器。

查看更多:

http://www.seirer.net/blog/2014/6/10/solved-how-to-open-a-url-in-the-default-browser-in-csharp http://www.seirer.net/blog/2014/6/10/solved-how-to-open-a-url-in-the-default-browser-in-csharp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 特定进程的参数,使用 url 打开浏览器 的相关文章

  • F1 2019 UDP解码

    我目前正在为 F1 方向盘开发自己的显示器 F1 2019 由codemasters提供 通过UDP发送数据 该数据存储在字节数组中 我在解码返回的数组时遇到一些问题 问题是我得到了很多信息 但我不知道如何处理它们 我将向您介绍我所尝试过的
  • 如何在 Xamarin.Forms 中强制使用浅色模式?

    我的应用程序的 UI 设计为在灯光模式下使用 但如果手机的默认主题是深色模式 我的应用程序也会切换到深色模式 并且 UI 看起来很垃圾 所以我想强制我的应用程序使用灯光模式 我怎样才能做到这一点 In my app xaml我使用的文件Us
  • 将 CryptoStream 解密为 MemoryStream

    我编写了一个过程 其中文件被加密并上传到 Azure 然后必须解密下载过程 这会失败并出现 填充无效且无法删除 错误 或 要解密的数据长度为无效的 错误 我在网上尝试了很多解决方案 包括C 使用 RijndaelManaged 和 Cryp
  • 无法使用 MinGW C++ 在 NetBeans IDE 7.3 中编译“Hello World”

    我正在尝试制作一个简单的 Hello World 在 NetBeans IDE 7 3 中使用 MinGW 作为我的 C 编译器来编写程序 我遇到了构建失败的情况 但我不知道为什么 这是我的编译器设置 Family MinGW 基本目录 C
  • 如何在插件场景中实现程序集绑定重定向?

    我有一个plugin P延伸和application A NET40 我无法控制 P 程序集 NET40 有一个shared dependency D NET35 P和D都依赖于FSharp Core 但版本不同 P是针对FSharp Co
  • 这个对象的内存会是什么样子?

    我想知道这个类 它的对象 的内存布局是什么样的 class MyClass string myString int myInt public MyClass string str int i myString str myInt i MyC
  • C++ 中的静态虚函数

    我有一个基类和一个派生类 我想更改基函数 同时保持它们静态 因为它们应该作为静态传递给其他函数 我怎样才能做到这一点 ATL 框架通过将基类设为模板 然后让派生类将其类类型作为模板参数传递 从而绕过了无虚拟静态的限制 然后 基类可以在需要时
  • 如何存储生成的格式化 C 字符串

    这是一个新手问题 为了创建格式化的 C 字符串 我使用printf like int n 10 printf My number is i 10 但是 怎么样 int n 10 char msg My number is i 10 prin
  • 如何对具有无效值的属性使用 JSON.net 的默认值

    我正在使用 Newtonsoft JSON 库来反序列化来自 Web 服务的响应 问题是某些字段包含无效值 例如 一条记录上的一个字段包含一个 T 表示该字段应该是数字 我想做的是将无效字段的值设置为 null 或其他默认值 我的所有属性都
  • 枚举和枚举类之间的区别[重复]

    这个问题在这里已经有答案了 谁能解释一下两者之间的区别 enum Type1 type2 And enum class Type1 type2 我经常使用前者 可能太频繁而没有足够的封装 但我从未使用过第二个例子 Thanks enum A
  • 实体框架..自引用表..获取深度=x的记录?

    我成功地在实体框架中使用自引用表 但我不知道如何获得所需深度的记录 这应该是什么逻辑 Model public class FamilyLabel public FamilyLabel this Children new Collectio
  • 使用 Entity Framework Core 在运行时迁移

    我正在将 PHP Illuminate 应用程序移植到 ASP NET Core EF Core 其中一部分由类似 Wordpress 的安装过程组成 该过程要求提供数据库凭据 然后创建应用程序运行所需的表 本质上 我想在运行时运行某种迁移
  • ASP.NET MVC - 路由 - 具有文件扩展名的操作

    有没有办法实现调用URLhttp mywebsite myarea mycontroller myaction xml这基本上是 假 请求文件 但结果将是一个为动态创建的文件提供服务的操作操作 我试过这个 context MapRoute
  • 如何使用 GCC 在 C 上编译库?

    我用这些文件创建了一个库pila h and pila c 我编译文件pila c with gcc pila c c这个库运行良好 我已经测试过了 然后我又做了一个图书馆 这个库有文件pila funciones extra h and
  • 初学者友好的方法来获取所有文件和目录的列表

    使用 NET 3 0 我得到了下面的方法 它可以正确返回指定目录的所有文件和目录 以及子目录 的集合 如果可能的话 我想将其简化为仅使用我非常熟悉的结构 具体来说 有以下几点我不太清楚 1 IEnumerable
  • 如何像用户打字一样将输入发送到控制台?

    这是我的问题 我有一个程序必须在 TTY 中运行 cygwin 提供了这个 TTY 当我重定向 stdIn 时 程序失败 因为它没有 TTY 我无法修改该程序 并且需要某种方法使其自动化 如何抓取 cmd exe 窗口并向其发送数据并使其认
  • GridView,在代码中添加标题行第 2 部分

    这是这篇文章的延续 但添加了完整的代码 ASP NET GridView 在代码中添加标题行 https stackoverflow com questions 19119004 asp net gridview adding header
  • 对 MFC UI 应用程序进行单元测试吗?

    如何对大型 MFC UI 应用程序进行单元测试 我们有一些大型 MFC 应用程序已经开发了很多年 我们使用一些标准的自动化 QA 工具来运行基本脚本来检查基础知识 文件打开等 这些由 QA 小组在日常构建后运行 但我们希望引入一些程序 以便
  • Web 服务无法使用 GAC 中的类型创建类型错误

    遇到一个不寻常的问题时 我似乎喜欢做一些不常见的事情 我有一个复合控件 它检查给定的 Web 服务文件是否存在于我的应用程序的根目录中 如果不存在 它会在标记中创建带有必要指令的文件以进行滚动 如下所示 反过来 它被保存到输出中 完成此步骤
  • 在.Net中使用ObjectCache缓存对象并设置过期时间

    我陷入了一个场景 我的代码如下 更新 它不是关于如何使用数据缓存 我已经在使用它及其工作 它是关于扩展它 以便该方法在到期时间和从外部源获取新数据之间不会进行调用 object string this GetDataFromCache ca

随机推荐

  • 如何将持久计数器重置为特定值?

    我之前问过一个问题 如何防止该计数器重置为 100 000 https stackoverflow com questions 5250118 how to keep this counter from reseting at 100 00
  • sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)尝试创建数据库时无法打开数据库文件错误[重复]

    这个问题在这里已经有答案了 我正在 AWS 上的 Ubuntu 18 04 Lightsail 实例中工作 当我在 python3 中运行以下代码时 出现以下错误 该脚本中的每一行都运行良好 除了最后一行Base metadata crea
  • 如何在 d3 力定向图中将链接渲染为弯头连接器

    我对 D3 很陌生 这就是我到目前为止所做的here http jsfiddle net gj2y87z8 13 实际的代码在这里 var width 1840 height 1480 constant 100 color BCD8CD v
  • 在 for 循环的开头组合数组 (Bash)

    可以做这样的事情吗 a 1 2 3 b 4 5 6 for num in a b or for num in a b do echo num done Outputs 1 2 3 4 5 6 我知道你可以先将它们组合起来 然后循环它们 但是
  • 优化截击

    我在android中使用Volley库 我在浏览器中运行相同的url 它在不到一秒的时间内返回 我想知道 如何优化Volley 不清楚 Cache Queue Take 代表什么以及为什么它是 3 6 秒 或者为什么添加缓存队列获取和网络完
  • 使用 iTExtsharp 将表格添加到现有 PDF 中

    我有一个 PDF 其中有一个表格是动态的 我想在现有 PDF 中动态地将下面的另一个表格添加到该表格中 有什么方法可以在现有 PDF 中的特定位置添加表格 现有表格 不在文档末尾 已完成 然后我想添加我的表格 我该如何添加 请给我推荐一些好
  • Nginx WordPress

    我目前正在尝试让我的 Nginx Mysql Wordpress 在 Fedora 18 x64 上工作 做了以下手册http www howtoing com install wordpress using lamp or lemp on
  • 对城市的区域名称进行地理编码以获取纬度和经度

    我有我所在城市的区域名称列表 我需要相同的纬度和经度 我可以使用任何服务来获取数据吗 我不想使用任何地图 我想进行简单的 api 调用并通过 json 或 xml 获取经纬度 虽然问题已经得到解答 但我想补充一点 谷歌并不是唯一提供地理编码
  • 搜索 django 中表中的所有字段

    如何使用过滤子句在django中搜索表中的所有字段 ex table object filter 表中的任何字段 sumthing Thanks 我同意阿拉斯代尔的观点 但你问题的答案是这样的 from django db models i
  • react-native-google-places-autocomplete 给它一个值,而不仅仅是默认(初始)值

    我有一个工作
  • 在eclipse中播放ogg文件

    所以我试图在我的乒乓球游戏中添加声音 但由于某种原因我似乎无法播放声音 没有错误消息 这意味着路径是正确的 但声音根本不正确玩 以下是我的背景音乐代码 把pong的东西都删掉了 先谢谢了 import java applet Applet
  • Maui-blazor 渐变闪屏

    是否可以设置渐变启动画面 在例子中 https learn microsoft com en us dotnet maui user interface images splashscreen tabs android
  • Misra 2012 不允许在不同指针之间进行转换的基本原理

    我目前正在开发一个项目 该项目要求代码符合 Misra 2012 标准 在整个项目中 我们有很多必需的 Misra 警告 告诉我们无法将指向一种类型的指针转 换为指向另一种类型的指针 事情很简单void memcpy void to con
  • GET/POST 参数数量超出设置。DATA_UPLOAD_MAX_NUMBER_FIELDS

    我收到错误 GET POST 参数的数量超出了设置 DATA UPLOAD MAX NUMBER FIELDS 错误表明 TooManyFieldsSent 在 api upload 我在我的views py def upload requ
  • 如何使用 vaadin 网格导出到 csv/excel?

    在 Vaadin 14 中 我正在创建网格 并希望用户有一种稳定 简单的方法将网格内容导出到 csv 或最好是 Excel 为此 我很惊讶 Vaadin 似乎没有提供此功能 因此必须使用第 3 方开发人员插件 例如https vaadin
  • 三个点应该怎么写?

    简单的问题 我想设置一个 TextView 其中我想要三个点 省略号 喜欢 Read more 到字符串中 这三个点应该怎么写呢 在字符串文字中写入 u2026 看http www fileformat info info unicode
  • Google Maps API v3 - 为什么没有事件上下文?

    第一次使用 Google Maps API v3 我得到了一张带有一堆标记的地图 我想做到这一点 以便当您单击其中一个时 将显示一个特定的信息窗口 特定于您单击的标记 我真的很惊讶点击事件没有告诉您被点击的实际标记 我知道有一个解决方案使用
  • 使用批量/更新方法将“标签”应用于数百万个文档

    我们的 ElasticSearch 实例中有大约 55 000 000 个文档 我们有一个带有 user ids 的 CSV 文件 最大的 CSV 有 9M 个条目 我们的文档以 user id 作为键 所以这很方便 我发布这个问题是因为我
  • 基于欧几里德距离的 3D 连接点标记

    目前 我正在开发一个项目 该项目尝试通过将连通性指定为最小欧几里德距离来对数据集中的 3d 点进行分组 我现在的算法只是简单的洪水填充的 3D 改编 size t PointSegmenter growRegion size t seed
  • C# 特定进程的参数,使用 url 打开浏览器

    我正在编写一个应用程序 该应用程序应该通过单击按钮来打开某个进程 但是 用户可以添加新按钮 我使用以下代码来执行单击按钮时启动进程的操作 private void StartProcess string path ProcessStartI