C# - Verificando a conexão e abrindo uma página web


Para verificar se existe uma conexão ativa com a internet podemos usar a função InternetGetConnectedState da APi Win32.

Essa função recebe dois parâmetros.

A função retorna TRUE indicando se existe uma conexão ou modem ativo, ou FALSE se não existir conexão ou se todas as conexão não estão ativas.

O namespace System.Runtime.InteropServices fornece uma ampla variedade de membros que suportam a interoperabilidade e a invocação de serviços da plataforma sendo que  é através desse namespace que usamos o atributo DllImport para definir os métodos de invocação da plataforma para acessar as APIs de código não gerenciado (COM).

Quando você utiliza uma DLL externa via DllImport, o .NET chama a API do Windows chamada LoadLibrary; essa API é responsável por localizar a sua DLL no computador e carregá-la na memória...

A LoadLibrary, procura em diferentes lugares, usando a seguinte ordem:

  1. Na pasta onde está o executável da aplicação;
  2. Na pasta padrão do sistema (C:\Windows\System32)
  3. Na pasta padrão onde está instalado o Windows (C:\Windows)
  4. Na pasta a partir de onde a aplicação foi executada;

Dessa forma, se a sua DLL estiver em qualquer destes locais, ela será encontrada, e executada...

Fique atento portanto para possíveis versões diferentes da mesma DLL em arquivos com o mesmo nome mas em lugares diferentes, pois desta forma o DllImport vai executar a primeira que achar.

A classe Process fornece acesso a processos locais e remotos e permite iniciar e interromper processos do sistema local.

Um componente Process fornece acesso a um processo que esta sendo executado no computador. Um processo nada mais é que uma aplicação que esta sendo executada. A thread é a unidade básica na qual o Sistema Operacional aloca o tempo de processamento e pode executar qualquer parte do código de um processo.

O Componente Process é uma ferramenta útil para iniciar, parar, controlar e monitorar aplicações, e, através do seu uso podemos obter uma lista de processos que estão rodando, ou iniciar um novo processo.

O método Start() , inicia ou reutiliza um processo que esta sendo definido na propriedade StartInfo do componente Process e o associa a este componente.

O método sobrecarregado Start('string') inicia um processo definido pelo nome do documento ou aplicação através da associação dos recursos com o componente Process.

Abra o Visual C# 2010 Express Edition e crie um novo projeto do tipo Windows Application com o nome VerificandoConexaoWeb;

No formulário padrão form1.cs inclua um controle LinkLabel conforme o leiaute abaixo:

A seguir defina os seguintes namespaces que vamos usar no projeto:

using System.Runtime.InteropServices;
using
System.Diagnostics;

Agora no formulário form1.cs defina as seguintes rotinas:

//Método da API

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


// Um método que verifica se esta conectado

public static Boolean IsConnected()

{

   int Description;

   return InternetGetConnectedState(out Description, 0);

}

 

No evento Click do controle LinkLabel defina o seguinte código:

private void linkLabel1_Click(object sender, EventArgs e)

{

// Se a internet esta conectada

  if (IsConnected())

  {

     Process mProcesso = new Process();
 

     // indica se deve usar o shell do sistema

    // operacional para iniciar o processo

    mProcesso.StartInfo.UseShellExecute = true;

    // podemos iniciar qualquer processo

    mProcesso.StartInfo.FileName = "http://www.macoratti.net";

    // indica se o processo deve iniciar em uma nova janela

    mProcesso.StartInfo.CreateNoWindow = true;

    mProcesso.Start();


    //outra forma direta de chamar a página seria

   //System.Diagnostics.Process.Start("http://www.macoratti.net");

  }

   else

  {

      MessageBox.Show("Não exite conexão ativa com a internet.");

  }

}

 

Executando o projeto e clicando no LinkLabel a página será aberta em uma nova janela.

Até o próximo artigo C#...

Pegue o projeto completo aqui: VerificandoConexaoWeb.zip

Referências:


José Carlos Macoratti