c# - poner - ¿Cómo puedo abrir una URL en el navegador predeterminado de los usuarios desde mi aplicación?
configurar internet explorer como predeterminado en windows 10 (2)
Process.Start ([su url]) es de hecho la respuesta, en todos los casos, salvo en los nichos. Para completar, sin embargo, mencionaré que nos topamos con un caso tan específico hace un tiempo: si está intentando abrir un url "file: /" (en nuestro caso, para mostrar la copia local instalada de nuestra webhelp), al lanzar desde el shell, los parámetros de la url fueron descartados.
Nuestra solución bastante hackosa, que no recomiendo a menos que encuentre un problema con la solución "correcta", se veía así:
En el controlador de clic para el botón:
string browserPath = GetBrowserPath();
if (browserPath == string.Empty)
browserPath = "iexplore";
Process process = new Process();
process.StartInfo = new ProcessStartInfo(browserPath);
process.StartInfo.Arguments = "/"" + [whatever url you''re trying to open] + "/"";
process.Start();
La función fea que no debes usar a menos que Process.Start ([tu url]) no haga lo que esperas que sea:
private static string GetBrowserPath()
{
string browser = string.Empty;
RegistryKey key = null;
try
{
// try location of default browser path in XP
key = Registry.ClassesRoot.OpenSubKey(@"HTTP/shell/open/command", false);
// try location of default browser path in Vista
if (key == null)
{
key = Registry.CurrentUser.OpenSubKey(@"Software/Microsoft/Windows/Shell/Associations/UrlAssociations/http", false); ;
}
if (key != null)
{
//trim off quotes
browser = key.GetValue(null).ToString().ToLower().Replace("/"", "");
if (!browser.EndsWith("exe"))
{
//get rid of everything after the ".exe"
browser = browser.Substring(0, browser.LastIndexOf(".exe") + 4);
}
key.Close();
}
}
catch
{
return string.Empty;
}
return browser;
}
¿Cómo puedo tener un botón en mi aplicación de escritorio que hace que el navegador predeterminado del usuario se inicie y muestre una URL proporcionada por la lógica de la aplicación.
Process.Start("http://www.google.com");