Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Start Default Browser - Windows

Tags:

vb.net

When starting the default browser like this:

        Dim trgt1 As String = "http://www.vbforums.com/showthread.php?t=612471"
        pi.FileName = trgt1
        System.Diagnostics.Process.Start(pi)

It takes about 40 seconds to open the page.

If I do it like this, though this isn't the default browser

        Dim trgt1 As String = "http://www.vbforums.com/showthread.php?t=612471"
        pi.Arguments = trgt1
        pi.FileName = "iexplore.exe" 'or firefox.exe
        System.Diagnostics.Process.Start(pi)

it opens immediately. Is this a bug or a feature? I have tried this with both IE and FireFox set to be the default browser.

like image 765
dbasnett Avatar asked Dec 22 '25 07:12

dbasnett


1 Answers

1

Windows is running through the registry looking for an appropriate application to open the document with (via explorer.exe).

2

You are explicitly telling windows to use xxx.exe to open the document.

Update for the moving target: ;-)

The reason it is so slow is that the Url you are specifying doesn't look like anything it knows how to open, with a browser or otherwise, and has to employ brute force in determining this.

If you wan to speed up launching with the default browser, get it from HKEY_CURRENT_USER\Software\Classes\http\shell\open\command and use #2.

Use this function to retrieve path of default browser

/// <summary>
/// Reads path of default browser from registry
/// </summary>
/// <returns></returns>
private static string GetDefaultBrowserPath()
{
   string key = @"htmlfile\shell\open\command";
   RegistryKey registryKey =
   Registry.ClassesRoot.OpenSubKey(key, false);
   // get default browser path
   return ((string) registryKey.GetValue(null, null)).Split('"')[1];
}

Opens URL in default browser from within the C# program.

string defaultBrowserPath = GetDefaultBrowserPath();

try
{
   // launch default browser
   Process.Start(defaultBrowserPath, "http://www.yahoo.com");
}
catch (Exception exp)
{
   MessageBox.Show(exp.Message);
}

Opens URL in separate instance of default browser from within the C# program.

// open URL in separate instance of default browser
Process p = new Process();
p.StartInfo.FileName = GetDefaultBrowserPath();
p.StartInfo.Arguments = "http://www.yahoo.com";
p.Start();

From this blog post

like image 108
Sky Sanders Avatar answered Dec 24 '25 07:12

Sky Sanders



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!