pagina navegador desde aplicacion abrir c# .net wpf

c# - navegador - ¿Cómo abrir una página web desde mi aplicación?



abrir pagina web desde c# (9)

Quiero que mi aplicación WPF abra el navegador predeterminado y vaya a una determinada página web. ¿Cómo puedo hacer eso?


Aquí está mi código completo de cómo abrir.

hay 2 opciones:

  1. abrir usando el navegador predeterminado (el comportamiento es como abrir dentro de la ventana del navegador)

  2. abrir a través de las opciones de comando predeterminadas (el comportamiento es como usar el comando "RUN.EXE")

  3. abrir a través de ''explorer'' (el comportamiento es como escribir url dentro de la url de la ventana de la carpeta)

[sugerencia opcional] 4. use la ubicación del proceso iexplore para abrir la url requerida

CÓDIGO:

internal static bool TryOpenUrl(string p_url) { // try use default browser [registry: HKEY_CURRENT_USER/Software/Classes/http/shell/open/command] try { string keyValue = Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER/Software/Classes/http/shell/open/command", "", null) as string; if (string.IsNullOrEmpty(keyValue) == false) { string browserPath = keyValue.Replace("%1", p_url); System.Diagnostics.Process.Start(browserPath); return true; } } catch { } // try open browser as default command try { System.Diagnostics.Process.Start(p_url); //browserPath, argUrl); return true; } catch { } // try open through ''explorer.exe'' try { string browserPath = GetWindowsPath("explorer.exe"); string argUrl = "/"" + p_url + "/""; System.Diagnostics.Process.Start(browserPath, argUrl); return true; } catch { } // return false, all failed return false; }

y la función de Ayudante:

internal static string GetWindowsPath(string p_fileName) { string path = null; string sysdir; for (int i = 0; i < 3; i++) { try { if (i == 0) { path = Environment.GetEnvironmentVariable("SystemRoot"); } else if (i == 1) { path = Environment.GetEnvironmentVariable("windir"); } else if (i == 2) { sysdir = Environment.GetFolderPath(Environment.SpecialFolder.System); path = System.IO.Directory.GetParent(sysdir).FullName; } if (path != null) { path = System.IO.Path.Combine(path, p_fileName); if (System.IO.File.Exists(path) == true) { return path; } } } catch { } } // not found return null; }

Espero que haya ayudado.


He estado usando esta línea para iniciar el navegador predeterminado:

System.Diagnostics.Process.Start("http://www.google.com");


He probado que está funcionando perfectamente

He estado usando esta línea para iniciar el navegador predeterminado:

System.Diagnostics.Process.Start("http://www.google.com");


La forma de la vieja escuela;)

public static void openit(string x) { System.Diagnostics.Process.Start("cmd", "/C start" + " " + x); }

Uso: openit("www.google.com");



No puede iniciar una página web desde una aplicación elevada. Esto generará una excepción de 0x800004005, probablemente porque explorer.exe y el navegador no se ejecutan de forma elevada.

Para iniciar una página web desde una aplicación elevada en un navegador web no elevado, use el código creado por Mike Feng . Traté de pasar la URL a lpApplicationName pero eso no funcionó. Además, no cuando uso CreateProcessWithTokenW con lpApplicationName = "explorer.exe" (o iexplore.exe) y lpCommandLine = url.

La siguiente solución alternativa funciona: cree un pequeño proyecto EXE que tenga una tarea: Process.Start (url), use CreateProcessWithTokenW para ejecutar este .EXE. En mi Windows 8 RC esto funciona bien y abre la página web en Google Chrome.


Si bien se ha dado una buena respuesta (utilizando Process.Start ), es más seguro encapsularla en una función que comprueba que la cadena pasada es de hecho un URI, para evitar el inicio accidental de procesos aleatorios en la máquina.

public static bool IsValidUri(string uri) { if (!Uri.IsWellFormedUriString(uri, UriKind.Absolute)) return false; Uri tmp; if (!Uri.TryCreate(uri, UriKind.Absolute, out tmp)) return false; return tmp.Scheme == Uri.UriSchemeHttp || tmp.Scheme == Uri.UriSchemeHttps; } public static bool OpenUri(string uri) { if (!IsValidUri(uri)) return false; System.Diagnostics.Process.Start(uri); return true; }


Tengo la solución para esto debido a que tengo un problema similar hoy.

Supongamos que quiere abrir http://google.com desde una aplicación que se ejecuta con privilegios de administrador:

ProcessStartInfo startInfo = new ProcessStartInfo("iexplore.exe", "http://www.google.com/"); Process.Start(startInfo);


System.Diagnostics.Process.Start("http://www.webpage.com");

Una de muchas maneras.