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:
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;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);
{ 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();
//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: