Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: andrecid en 2 Noviembre 2014, 13:12 pm



Título: Una ayuda con un proyecto de c#?
Publicado por: andrecid en 2 Noviembre 2014, 13:12 pm
Hola a ver hoy estuve leyendo y investigando por internet como podía hacer la aplicación como, vi que con el español no encontraba nada decidí búscarlo en ingles y bueno he encontrado varias cositas pero no es lo que yo quería aun así me vale.

Lo que quiero hacer es tengo 1 form y en este si damos un click en el button1 nos lleva a una página web, hasta aquí todo bien, luego de llevarnos a la página web aparece otro form y este debe de validar la conexión a la página web que nos llevo el form1 como, la pena es que solo he encontrado 2 formas:

1- Con el ping
o de estas formas:
Código
  1. public partial class Form2 : Form
  2.    {
  3.  
  4.  
  5.        public Form2()
  6.        {
  7.            InitializeComponent();
  8.        }
  9.  
  10.        private void Form2_Load(object sender, EventArgs e)
  11.        {
  12.            bool Conection = NetworkInterface.GetIsNetworkAvailable();
  13.            if (Conection == true)
  14.            {
  15.                label1.Text = "Conexión realizada con éxito";
  16.                button1.Visible = true;
  17.            }
  18.            else
  19.            {
  20.                label1.Text = " Conexión fallida";
  21.            }
  22.        }

o

Código
  1. public partial class Form2 : Form
  2.    {
  3.  
  4.        [DllImport("wininet.dll")]
  5.        private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
  6.  
  7.        public Form2()
  8.        {
  9.            InitializeComponent();
  10.        }
  11.  
  12.        private void Form2_Load(object sender, EventArgs e)
  13.        {
  14.            int Desc;
  15.            MessageBox.Show(InternetGetConnectedState(out Desc, 0).ToString());
  16.  
  17.        }

La pena es que con esta solo me aparece un mensaje True o false ( en el 2 codigo ), lo que quiero en realidad es saber como podría hacerse :  si la pagina del form1 esta conectada a nuestro navegador entonces aparezca en el label que la conexión se hizo correctamente, si no se puede de esta forma con la de internet me vale.

Gracias


Título: Re: Una ayuda con un proyecto de c#?
Publicado por: Eleкtro en 2 Noviembre 2014, 14:05 pm
lo que quiero en realidad es saber como podría hacerse :  si la pagina del form1 esta conectada a nuestro navegador entonces aparezca en el label que la conexión se hizo correctamente

Vamos a ver, ¿lo que quieres es esperar a que la página se cargue del todo en el WebBrowser, y luego mostrar un "mensaje" de validación?.

Entonces suscríbete al evento DocumentCompleted del WebBrowser

Código
  1.    ' [WebBrowser] - Navigate And Wait
  2.    '
  3.    ' By Elektro H@cker
  4.    '
  5.    ' Usage Examples:
  6.    ' NavigateAndWait(WebBrowser1, "www.google.com") : MsgBox("Webpage is ready!")
  7.  
  8.    ''' <summary>
  9.    ''' Navigates to an url and waits the page to be loaded.
  10.    ''' </summary>
  11.    ''' <param name="url">Indicates the url to navigate.</param>
  12.    ''' <param name="newWindow">Indicates whether the url should open into a new browser window.</param>
  13.    Private Sub NavigateAndWait(ByVal Browser As WebBrowser,
  14.                                ByVal url As String,
  15.                                Optional newWindow As Boolean = False)
  16.  
  17.        With Browser
  18.  
  19.            .Tag = False ' IsWebPageLoaded = False
  20.            AddHandler .DocumentCompleted, AddressOf WebBrowser_DocumentCompleted
  21.            .Navigate(url, newWindow)
  22.  
  23.            Do Until DirectCast(.Tag, Boolean) ' IsWebPageLoaded = True
  24.                Application.DoEvents()
  25.            Loop
  26.  
  27.            RemoveHandler .DocumentCompleted, AddressOf WebBrowser_DocumentCompleted
  28.  
  29.        End With
  30.  
  31.    End Sub
  32.  
  33.    ''' <summary>
  34.    ''' Handles the DocumentCompleted event of the WebBrowser control.
  35.    ''' </summary>
  36.    ''' <param name="sender">The source of the event.</param>
  37.    ''' <param name="e">The <see cref="WebBrowserDocumentCompletedEventArgs"/> instance containing the event data.</param>
  38.    Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
  39.  
  40.        DirectCast(sender, WebBrowser).Tag = True
  41.  
  42.    End Sub

C#, traducción al vuelo
Código
  1. // [WebBrowser] - Navigate And Wait
  2. //
  3. // By Elektro H@cker
  4. //
  5. // Usage Examples:
  6. // NavigateAndWait(WebBrowser1, "www.google.com") : MsgBox("Webpage is ready!")
  7.  
  8. /// <summary>
  9. /// Navigates to an url and waits the page to be loaded.
  10. /// </summary>
  11. /// <param name="url">Indicates the url to navigate.</param>
  12. /// <param name="newWindow">Indicates whether the url should be open into a new browser window.</param>
  13. private void NavigateAndWait(WebBrowser Browser, string url, bool newWindow = false)
  14. {
  15. var _with1 = Browser;
  16.  
  17. _with1.Tag = false; // IsWebPageLoaded = False
  18. _with1.DocumentCompleted += WebBrowser_DocumentCompleted;
  19. _with1.Navigate(url, newWindow);
  20.  
  21. // IsWebPageLoaded = True
  22. while (!((bool)_with1.Tag)) {
  23. Application.DoEvents();
  24. }
  25.  
  26. _with1.DocumentCompleted -= WebBrowser_DocumentCompleted;
  27.  
  28. }
  29.  
  30. /// <summary>
  31. /// Handles the DocumentCompleted event of the WebBrowser control.
  32. /// </summary>
  33. /// <param name="sender">The source of the event.</param>
  34. /// <param name="e">The <see cref="WebBrowserDocumentCompletedEventArgs"/> instance containing the event data.</param>
  35. private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
  36. {
  37. ((WebBrowser)sender).Tag = true;
  38.  
  39. }
  40.  
  41. //=======================================================
  42. //Service provided by Telerik (www.telerik.com)
  43. //=======================================================

PD: Puedes reemplazar la instrucción Application.DoEvents() por un BGWorker.

saludos


Título: Re: Una ayuda con un proyecto de c#?
Publicado por: andrecid en 2 Noviembre 2014, 14:13 pm
En realidad no , la página se abre en los navegadores, y lo que quiero es que comprueba si algún navegador tiene la página web abierta