Una ayuda con un proyecto de c#?

Iniciado por andrecid, 2 Noviembre 2014, 13:12 PM

0 Miembros y 1 Visitante están viendo este tema.

andrecid

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 (cSHARP) [Seleccionar]
public partial class Form2 : Form
   {

     
       public Form2()
       {
           InitializeComponent();
       }

       private void Form2_Load(object sender, EventArgs e)
       {
           bool Conection = NetworkInterface.GetIsNetworkAvailable();
           if (Conection == true)
           {
               label1.Text = "Conexión realizada con éxito";
               button1.Visible = true;
           }
           else
           {
               label1.Text = " Conexión fallida";
           }
       }


o

Código (cSHARP) [Seleccionar]
public partial class Form2 : Form
   {

       [DllImport("wininet.dll")]
       private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);

       public Form2()
       {
           InitializeComponent();
       }

       private void Form2_Load(object sender, EventArgs e)
       {
           int Desc;
           MessageBox.Show(InternetGetConnectedState(out Desc, 0).ToString());

       }


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

Eleкtro

#1
Cita de: andrecid en  2 Noviembre 2014, 13:12 PMlo 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 (vbnet) [Seleccionar]
   ' [WebBrowser] - Navigate And Wait
   '
   ' By Elektro H@cker
   '
   ' Usage Examples:
   ' NavigateAndWait(WebBrowser1, "www.google.com") : MsgBox("Webpage is ready!")

   ''' <summary>
   ''' Navigates to an url and waits the page to be loaded.
   ''' </summary>
   ''' <param name="url">Indicates the url to navigate.</param>
   ''' <param name="newWindow">Indicates whether the url should open into a new browser window.</param>
   Private Sub NavigateAndWait(ByVal Browser As WebBrowser,
                               ByVal url As String,
                               Optional newWindow As Boolean = False)

       With Browser

           .Tag = False ' IsWebPageLoaded = False
           AddHandler .DocumentCompleted, AddressOf WebBrowser_DocumentCompleted
           .Navigate(url, newWindow)

           Do Until DirectCast(.Tag, Boolean) ' IsWebPageLoaded = True
               Application.DoEvents()
           Loop

           RemoveHandler .DocumentCompleted, AddressOf WebBrowser_DocumentCompleted

       End With

   End Sub

   ''' <summary>
   ''' Handles the DocumentCompleted event of the WebBrowser control.
   ''' </summary>
   ''' <param name="sender">The source of the event.</param>
   ''' <param name="e">The <see cref="WebBrowserDocumentCompletedEventArgs"/> instance containing the event data.</param>
   Private Sub WebBrowser_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)

       DirectCast(sender, WebBrowser).Tag = True

   End Sub


C#, traducción al vuelo
Código (csharp) [Seleccionar]

// [WebBrowser] - Navigate And Wait
//
// By Elektro H@cker
//
// Usage Examples:
// NavigateAndWait(WebBrowser1, "www.google.com") : MsgBox("Webpage is ready!")

/// <summary>
/// Navigates to an url and waits the page to be loaded.
/// </summary>
/// <param name="url">Indicates the url to navigate.</param>
/// <param name="newWindow">Indicates whether the url should be open into a new browser window.</param>
private void NavigateAndWait(WebBrowser Browser, string url, bool newWindow = false)
{
var _with1 = Browser;

_with1.Tag = false; // IsWebPageLoaded = False
_with1.DocumentCompleted += WebBrowser_DocumentCompleted;
_with1.Navigate(url, newWindow);

// IsWebPageLoaded = True
while (!((bool)_with1.Tag)) {
Application.DoEvents();
}

_with1.DocumentCompleted -= WebBrowser_DocumentCompleted;

}

/// <summary>
/// Handles the DocumentCompleted event of the WebBrowser control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="WebBrowserDocumentCompletedEventArgs"/> instance containing the event data.</param>
private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
((WebBrowser)sender).Tag = true;

}

//=======================================================
//Service provided by Telerik (www.telerik.com)
//=======================================================


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

saludos








andrecid

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