Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 25-09-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
No explicaste en profundidad los motivos por los que quieres detectar una conexión por Wifi contra una LAN pero si entendí bien la pregunta.

1. La API InternetGetConnectedState te permite conocer si tienes conectado un cable de red a tu tarjeta, para ello basta que compruebes que en el Flag incluye el valor INTERNET_CONNECTION_LAN, una simple operación and binaria te lo dirá.

2. El hecho de que estés conectado o no por wifi o por cable, no te garantiza que sepas que dispones de conexión efectiva a Internet, es por eso que te dejé el enlace Saber si hay conexión de internet, donde describo una función: Webing que se conecta a una url real, como apuntaba mamcx, yo prefiero la conexión a google.com por su estabilidad, pero puede ser la misma de microsoft. Eso te garantiza que la conexión es real y funcionante. No hay ninguna API que te haga esa labor con seguridad. En ese enlace, si lo leiste, describo como usar la función a través de un proxy.

3. Pueden coexistir una LAN y una WAN, por lo que lo mejor es apagar la WAN para asegurarte que la conexión será por cable, es por eso que te dejé el enlace Jugando con las conexiones Wifi, en el muestro como escanear redes wifi, saber a las redes a las que el PC está conectado por esa vía y la intensidad de señal (las barritas que comentas) conectarte y desconectarte, si bien el código está escrito en delphi, te dejo su equivalente en C, pues intuyo que te interesa más. La función desconecta todos los interfeces wifi disponibles en el equipo:

Código:
BOOL WifiDisConect()
{
  HANDLE hClient;
  DWORD dwVersion;
  PWLAN_INTERFACE_INFO_LIST pInterfaceInfoList;
  PGUID pInterfaceGuid;

  BOOL Result = false;

  if(ERROR_SUCCESS == WlanOpenHandle(1, NULL, &dwVersion, &hClient)){
    if(ERROR_SUCCESS == WlanEnumInterfaces(hClient, NULL, &pInterfaceInfoList)){
      for(int i=0; i < pInterfaceInfoList->dwNumberOfItems; i++){
        pInterfaceGuid = &pInterfaceInfoList->InterfaceInfo[pInterfaceInfoList->dwIndex].InterfaceGuid;
        Result = (ERROR_SUCCESS == WlanDisconnect(hClient, pInterfaceGuid, NULL));
      }
      WlanFreeMemory(pInterfaceInfoList);
    }
    WlanCloseHandle(hClient, NULL);
  }
  return Result;
}
4. Si tu PC se conecta por cable a un punto de acceso wifi es posible que lo tengas más difícil.


Estoy convencido de que con la información ofrecida serás capaz de conseguir tu objetivo.

Saludos.

Última edición por escafandra fecha: 25-09-2015 a las 00:29:27.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo puedo saber si ya tengo un formulario abierto.- socger Varios 5 11-03-2011 12:25:54
Comom saber si tengo instalado lamp Faust Linux 3 16-01-2009 02:07:00
Como saber si tengo conexión? Gagiel Internet 6 29-12-2007 20:20:32
saber cuantos componentes tengo en un form gulder Varios 6 25-04-2007 20:46:55
como saber que S.O tengo en mi Maq. caio Varios 1 24-08-2004 15:27:42


La franja horaria es GMT +2. Ahora son las 11:32:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi