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

时间:2015-06-22 12:16:32

标签: c# .net string http arguments

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

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

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

提前谢谢!

1 个答案:

答案 0 :(得分:1)

要开始使用特定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 "";  
    }
}

您可以使用浏览器的路径和网站的网址,以获取示例:

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

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

url字符串中,您可以传递网页链接。它将使用url打开浏览器。

查看更多:

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