 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Dom 27 Sep, 2015 12:11 pm Asunto: PWLAN_CONNECTION_PARAMETERS |
|
|
Tengo este código con ayuda de ecafandra, pero necesito ayuda para obtener la PWLAN_CONNECTION_PARAMETERS de la Wi-Fi que desconecto para luego poder conectarme de nuevo.
| Código: |
bool __fastcall TfrmComprobacion::OnOfWiFi(bool OnOf)
{
HANDLE hClient;
DWORD dwVersion;
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_CONNECTION_PARAMETERS pWLCP;
PGUID pInterfaceGuid;
bool Result = false;
if(ERROR_SUCCESS == WlanOpenHandle(1, NULL, &dwVersion, &hClient))
{
if(ERROR_SUCCESS == WlanEnumInterfaces(hClient, NULL, &pIfList))
{
for(unsigned int i = 0; i < pIfList->dwNumberOfItems; i++)
{
pInterfaceGuid = &pIfList->InterfaceInfo[pIfList->dwIndex].InterfaceGuid;
if(OnOf)
{
//Aquí necesito ayuda, no se como obtener los parametros de la conexión que desconecto para conectarme de nuevo.
pWLCP->dwFlags =
pWLCP->dot11BssType =
pWLCP->pDesiredBssidList =
pWLCP->pDot11Ssid =
pWLCP->strProfile =
pWLCP->wlanConnectionMode =
Result = (ERROR_SUCCESS == WlanConnect(hClient, pInterfaceGuid, pWLCP, NULL));
}
else
Result = (ERROR_SUCCESS == WlanDisconnect(hClient, pInterfaceGuid, NULL));
}
WlanFreeMemory(pIfList);
}
WlanCloseHandle(hClient, NULL);
}
return Result;
}
//--------------------------------------------------------------------------- |
Pretendo hacer que la función conecte y desconecte el Wi-Fi que ya estaba conectado y para ello necesito obtener la Estructura de la que ya estaba conectada. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 27 Sep, 2015 4:25 pm Asunto: |
|
|
En principio los parámetros serían estos:
| Código: |
pWLCP = (PWLAN_CONNECTION_PARAMETERS)WlanAllocateMemory(sizeof(WLAN_CONNECTION_PARAMETERS));
pWLCP->strProfile = (PWCHAR)SSID; //Nombre de la red que desconectaste en PWCHAR (Unicode)
pWLCP->wlanConnectionMode = 0;
pWLCP->pDot11Ssid = NULL;
pWLCP->pDesiredBssidList = NULL;
pWLCP->dot11BssType = 1;
pWLCP->dwFlags = 0;
Result = (ERROR_SUCCESS == WlanConnect(hClient, pInterfaceGuid, pWLCP, NULL));
WlanFreeMemory(pWLCP);
|
El problema lo tienes ahora en conocer la Wifi que desconectaste. Asumiendo que solo hay un adaptador wifi presente en elPC una solución puede ser guardar el nombre que desconectaste para poder conectarte después:
| Código: | BOOL Wifi_Connect_DisConnect(BOOL connect)
{
static WCHAR SSID[256] = {0};
HANDLE hClient;
DWORD dwVersion;
PWLAN_INTERFACE_INFO_LIST pInterfaceInfoList;
PGUID pInterfaceGuid;
PWLAN_CONNECTION_PARAMETERS pWLCP;
PWLAN_AVAILABLE_NETWORK_LIST pNetworkList;
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;
if(connect){
pWLCP = (PWLAN_CONNECTION_PARAMETERS)WlanAllocateMemory(sizeof(WLAN_CONNECTION_PARAMETERS));
pWLCP->strProfile = SSID;
pWLCP->wlanConnectionMode = 0;
pWLCP->pDot11Ssid = NULL; //pDot11_DDSI;
pWLCP->pDesiredBssidList = NULL;
pWLCP->dot11BssType = 1;
pWLCP->dwFlags = 0;//0xF;
Result = (ERROR_SUCCESS == WlanConnect(hClient, pInterfaceGuid, pWLCP, NULL));
WlanFreeMemory(pWLCP);
}
else if(ERROR_SUCCESS == WlanGetAvailableNetworkList(hClient, pInterfaceGuid, 1, NULL, &pNetworkList)){
for(int j=0; j < pNetworkList->dwNumberOfItems; j++){
if(pNetworkList->Network[j].dwFlags & WLAN_AVAILABLE_NETWORK_CONNECTED){
lstrcpynW(SSID, pNetworkList->Network[j].strProfileName, 256);
Result = (ERROR_SUCCESS == WlanDisconnect(hClient, pInterfaceGuid, NULL));
}
}
WlanFreeMemory(pNetworkList);
}
}
WlanFreeMemory(pInterfaceInfoList);
}
WlanCloseHandle(hClient, NULL);
}
return Result;
}
|
El problema es más complejo cuando tenemos varios adaptadores wifi. La solución es guardarlos todos para restaurarlos después. La siguiente función muestra como hacerlo asumiendo que no hay más de 10 adaptadores wifi el el equipo (número más que suficiente):
| Código: |
// Con hasta 10 adaptadores wifi en el PC
BOOL Wifi_Connect_DisConnect2(BOOL connect)
{
struct WLANConnected{
WCHAR strProfileName[256];
GUID InterfaceGuid;
};
static WLANConnected Interfaces[10] = {0};
HANDLE hClient;
DWORD dwVersion;
PWLAN_INTERFACE_INFO_LIST pInterfaceInfoList;
PGUID pInterfaceGuid;
PWLAN_CONNECTION_PARAMETERS pWLCP;
PWLAN_AVAILABLE_NETWORK_LIST pNetworkList;
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;
if(connect){
for(int j=0; j<10; j++){
if(Interfaces[j].InterfaceGuid == *pInterfaceGuid){
pWLCP = (PWLAN_CONNECTION_PARAMETERS)WlanAllocateMemory(sizeof(WLAN_CONNECTION_PARAMETERS));
pWLCP->strProfile = Interfaces[j].strProfileName;
pWLCP->wlanConnectionMode = 0;
pWLCP->pDot11Ssid = NULL; //pDot11_DDSI;
pWLCP->pDesiredBssidList = NULL;
pWLCP->dot11BssType = 1;
pWLCP->dwFlags = 0;//0xF;
Result |= (ERROR_SUCCESS == WlanConnect(hClient, pInterfaceGuid, pWLCP, NULL));
WlanFreeMemory(pWLCP);
}
}
}
else if(ERROR_SUCCESS == WlanGetAvailableNetworkList(hClient, pInterfaceGuid, 1, NULL, &pNetworkList)){
for(int i=0; i < pNetworkList->dwNumberOfItems; i++){
if(pNetworkList->Network[i].dwFlags & WLAN_AVAILABLE_NETWORK_CONNECTED){
for(int j=0; j<10 && j<pInterfaceInfoList->dwNumberOfItems; j++){
lstrcpynW(Interfaces[j].strProfileName, pNetworkList->Network[i].strProfileName, 256);
Interfaces[j].InterfaceGuid = *pInterfaceGuid;
Result |= (ERROR_SUCCESS == WlanDisconnect(hClient, pInterfaceGuid, NULL));
}
}
}
WlanFreeMemory(pNetworkList);
}
}
WlanFreeMemory(pInterfaceInfoList);
}
WlanCloseHandle(hClient, NULL);
}
return Result;
}
|
Espero que la solución sea satisfactoria.
Saludos. |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Lun 28 Sep, 2015 10:33 am Asunto: |
|
|
No funciona.
El caso es que lo que quiero hacer es lo siguiente.
El cliente puede tener dos conexiónes de RED simultáneamente.
1. Wi-Fi (dispositivo USB o Wi-Fi integrado)
2. Tarjeta de RED conectada por cable.
LUEGO:
1. Mi aplicación primero comprueba si tiene el Wi-Fi conectado.
2. Si es así, debería de guardar sus parámetros de conexión en:
PWLAN_CONNECTION_PARAMETERS pWLCP;
para luego poder utilizarlo de nuevo en la conexión.
3. Desconecto el Wí-Fi, que ya logré con tu ayuda.
4. Realizo mis propias rutinas para comprobar la conexión CABLEADA, pero ya con la RED Wi-Fi desconectada.
5. Una vez comprobada la RED CABLEADA, volver a conectar la Wi-Fi que estaba conectada y para ello necesito los valores antiguos de la Wi-Fi que desconecte, pero antes de la desconexión.
6. Por tanto la pregunta sería...
¿Como consigo los parámetros de la Wi-Fi conectada?
He estado viendo todo en la pagina de Microsoft, pero no consigo dar con la forma de conseguirlo:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms707405(v=vs.85).aspx
Por cierto en el código que me explicas y en ambos casos da error en:
error: W8018 Assinging int to WLAN_CONNECTION_MODE
pWLCP->wlanConnectionMode = 0;
error: W8018 Assinging int to DOT11_BSS_TYPE
pWLCP->dot11BssType = 1;
He encontrado cosas parecidas a esta, pero no consigo aclararme:
| Código: |
/// <summary>
/// Requests a connection (association) to the specified wireless network.
/// </summary>
/// <remarks>
/// The method returns immediately. Progress is reported through the <see cref="WlanNotification"/> event.
/// </remarks>
public void Connect(Wlan.WlanConnectionMode connectionMode, Wlan.Dot11BssType bssType, string profile)
{
Wlan.WlanConnectionParameters connectionParams = new Wlan.WlanConnectionParameters();
connectionParams.wlanConnectionMode = connectionMode;
connectionParams.profile = profile;
connectionParams.dot11BssType = bssType;
connectionParams.flags = 0;
Connect(connectionParams);
}
|
| Código: |
static void Main( string[] args )
{
WlanClient client = new WlanClient();
foreach ( WlanClient.WlanInterface wlanIface in client.Interfaces )
{
// Lists all networks with WEP security
Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList( 0 );
foreach ( Wlan.WlanAvailableNetwork network in networks )
{
if ( network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP )
{
Console.WriteLine( "Found WEP network with SSID {0}.", GetStringForSSID(network.dot11Ssid));
}
}
// Retrieves XML configurations of existing profiles.
// This can assist you in constructing your own XML configuration
// (that is, it will give you an example to follow).
foreach ( Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles() )
{
string name = profileInfo.profileName; // this is typically the network's SSID
string xml = wlanIface.GetProfileXml( profileInfo.profileName );
}
// Connects to a known network with WEP security
string profileName = "Cheesecake"; // this is also the SSID
string mac = "52544131303235572D454137443638";
string key = "hello";
string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
}
}
|
_________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Lun 28 Sep, 2015 2:31 pm Asunto: |
|
|
El código lo he escrito yo, compila y funciona, si no fuera así, no lo hubiera publicado.
Te explico:
1. El error de compilación no es tal error y se debe a que asumo enumeraciones como enteros y así tengo configurado Builder (Builder5), de ahí los número 0 y 1 que comentas pero puedes sustituirlos por sus nominales correspondientes:
| Código: |
wlan_connection_mode_profile = 0
dot11_BSS_type_infrastructure = 1
|
De esa forma la sección de código quedaría así:
| Código: |
pWLCP = (PWLAN_CONNECTION_PARAMETERS)WlanAllocateMemory(sizeof(WLAN_CONNECTION_PARAMETERS));
pWLCP->strProfile = Interfaces[j].strProfileName;
pWLCP->wlanConnectionMode = wlan_connection_mode_profile; // <======== 0
pWLCP->pDot11Ssid = NULL; //pDot11_DDSI; // aquí no se mete el SSID pues hemos elegido usar profile
pWLCP->pDesiredBssidList = NULL;
pWLCP->dot11BssType = dot11_BSS_type_infrastructure; // <======== 1
pWLCP->dwFlags = 0;
Result |= (ERROR_SUCCESS == WlanConnect(hClient, pInterfaceGuid, pWLCP, NULL));
WlanFreeMemory(pWLCP);
|
2. Cuando un equipo está conectado a una red Wifi, se guarda su profile correspondiente por lo que no es necesario reintroducir más parámetros que su SSID para volver a conectarlo.
3. La API WLAN asume que el equipo puede tener más de un adaptador wifi, por eso se enumeran, cada adaptador puede estar conectado a una red diferente.
4. Lo anterior sugiere guardar para cada adaptador (interface) Wifi y el nombre de red SSID al que estaba conectado antes de desconectarlo. Eso es lo que hace el código y así funciona con BCB5 y Windows 10.
5. Si asumes un sólo adaptador wifi posible, entonces basta con guardar el SSID y ningun interfaceGUID. El código que asume esta opción está expuesto arriba aunque yo prefiero asumir más de un adaptador y red wifi.
6. Si quieres código para ver como intruducir clave de wifi para conectarte a una red nueva o borrar su profile puedes leer esto: Jugando con las conexiones Wifi. El código mostrado es sólo una parte del que encontrarás en los archivos adjuntos.
Saludos. |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mar 29 Sep, 2015 12:16 pm Asunto: |
|
|
escafandra... un MILLON DE GRACIAS...
Te lo agradezco muchísimo, muchísimo...
Todo funciona tal como deseaba gracias a ti.
Así quedó al final mi código:
| Código: |
//Función para comprobar si existe una conexión Wi-Fi (Hasta 3) CERO Desconecta y UNO Conecta
//Es necesario (#include "Wlanapi.h") y linkar la libreria Wlanapi.lib con el proyecto
bool __fastcall TfrmComprobacion::OnOffWiFi(bool OnOff)
{
struct WLANConnected{WCHAR strProfileName[256]; GUID InterfaceGuid;};//Estructura para guardar los 3 nombres SSID
static WLANConnected Interfaces[3] = {0};
HANDLE hClient;
DWORD dwVersion;
PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
PWLAN_INTERFACE_INFO pIfInfo = NULL;//Para conocer el estado de la conexión
PGUID pInterfaceGuid;
PWLAN_CONNECTION_PARAMETERS pWLCP;
PWLAN_AVAILABLE_NETWORK_LIST pNetworkList;//Parametros para guardar los nombres de las SSID
bool Result = false;
if(ERROR_SUCCESS == WlanOpenHandle(1, NULL, &dwVersion, &hClient))
{
if(ERROR_SUCCESS == WlanEnumInterfaces(hClient, NULL, &pIfList))
{
for(unsigned int i = 0; i < pIfList->dwNumberOfItems; i++)
{
pInterfaceGuid = &pIfList->InterfaceInfo[pIfList->dwIndex].InterfaceGuid;
if(OnOff)
{
for(int j = 0; j < 3; j++)//Check de hata 3 adaptadores Wi-Fi
{
if(Interfaces[j].InterfaceGuid == *pInterfaceGuid)
{
pWLCP = (PWLAN_CONNECTION_PARAMETERS)WlanAllocateMemory(sizeof(WLAN_CONNECTION_PARAMETERS));
pWLCP->strProfile = Interfaces[j].strProfileName;
pWLCP->wlanConnectionMode = wlan_connection_mode_profile;;
pWLCP->pDot11Ssid = NULL; //pDot11_DDSI;
pWLCP->pDesiredBssidList = NULL;
pWLCP->dot11BssType = dot11_BSS_type_infrastructure;
pWLCP->dwFlags = 0;//0xF;
Result |= (ERROR_SUCCESS == WlanConnect(hClient, pInterfaceGuid, pWLCP, NULL));
WlanFreeMemory(pWLCP);
pIfInfo = (WLAN_INTERFACE_INFO *) &pIfList->InterfaceInfo[i];
switch(pIfInfo->isState)
{
case wlan_interface_state_not_ready:
LWiFi->Caption = "No está listo"; break;
case wlan_interface_state_connected:
LWiFi->Font->Color = clLime;
LWiFi->Caption = "Conexión establecida"; break;
case wlan_interface_state_ad_hoc_network_formed:
LWiFi->Caption = "Probando configuración automática"; break;
case wlan_interface_state_disconnecting:
LWiFi->Caption = "Desconectando"; break;
case wlan_interface_state_disconnected:
LWiFi->Caption = "Desactivada y/o Desconectada"; break;
case wlan_interface_state_associating:
LWiFi->Caption = "Asociandose a la RED"; break;
case wlan_interface_state_discovering:
LWiFi->Caption = "Probando configuración de RED"; break;
case wlan_interface_state_authenticating:
LWiFi->Caption = "Procesando autenticación";break;
default:
LWiFi->Caption = "Estado desconocido"; break;
}
}
}
}
else
if(ERROR_SUCCESS == WlanGetAvailableNetworkList(hClient, pInterfaceGuid, 1, NULL, &pNetworkList))
{
for(unsigned int i = 0; i < pNetworkList->dwNumberOfItems; i++)
{
if(pNetworkList->Network[i].dwFlags & WLAN_AVAILABLE_NETWORK_CONNECTED)
{
for(unsigned int j = 0; j < 3 && j < pIfList->dwNumberOfItems; j++)//Check de hata 3 adaptadores Wi-Fi
{
lstrcpynW(Interfaces[j].strProfileName, pNetworkList->Network[i].strProfileName, 256);
Interfaces[j].InterfaceGuid = *pInterfaceGuid;
Result |= (ERROR_SUCCESS == WlanDisconnect(hClient, pInterfaceGuid, NULL));
pIfInfo = (WLAN_INTERFACE_INFO *) &pIfList->InterfaceInfo[i];
switch(pIfInfo->isState)
{
case wlan_interface_state_not_ready:
LWiFi->Caption = "No está listo"; break;
case wlan_interface_state_connected:
LWiFi->Font->Color = clLime;
LWiFi->Caption = "Conexión establecida"; break;
case wlan_interface_state_ad_hoc_network_formed:
LWiFi->Caption = "Probando configuración automática"; break;
case wlan_interface_state_disconnecting:
LWiFi->Caption = "Desconectando"; break;
case wlan_interface_state_disconnected:
LWiFi->Caption = "Desactivada y/o Desconectada"; break;
case wlan_interface_state_associating:
LWiFi->Caption = "Asociandose a la RED"; break;
case wlan_interface_state_discovering:
LWiFi->Caption = "Probando configuración de RED"; break;
case wlan_interface_state_authenticating:
LWiFi->Caption = "Procesando autenticación";break;
default:
LWiFi->Caption = "Estado desconocido"; break;
}
}
}
}
WlanFreeMemory(pNetworkList);
}
}
WlanFreeMemory(pIfList);
}
WlanCloseHandle(hClient, NULL);
}
return Result;
}
//---------------------------------------------------------------------------
|
_________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Ultima edición por JesúsGandia el Mar 29 Sep, 2015 2:33 pm, editado 3 veces |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mar 29 Sep, 2015 12:24 pm Asunto: |
|
|
Una pequeña observación...
¿este código no es redundante?
| Código: |
for(unsigned int i = 0; i < pNetworkList->dwNumberOfItems; i++)
{
if(pNetworkList->Network[i].dwFlags & WLAN_AVAILABLE_NETWORK_CONNECTED)
{
for(unsigned int j = 0; j < 3 && j < pIfList->dwNumberOfItems; j++)//Check de hata 3 adaptadores Wi-Fi |
ya que se asume que el primer FOR contempla los adaptadores totales en el equipo por tanto creo que el segundo FOR estaría de más.
y puedo aprovechar el índice (i) para todos los objetos.
corrígeme si me equivoco. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mar 29 Sep, 2015 7:07 pm Asunto: |
|
|
Tienes toda la razón, el bucle sobra y el límite del n° de interfaces debe ponerse en el bucle principal tras enumerar las interfaces:
| Código: |
// Con hasta 10 adaptadores wifi en el PC
BOOL Wifi_Connect_DisConnect2(BOOL connect)
{
struct WLANConnected{
WCHAR strProfileName[256];
GUID InterfaceGuid;
};
static WLANConnected Interfaces[10] = {0};
HANDLE hClient;
DWORD dwVersion;
PWLAN_INTERFACE_INFO_LIST pInterfaceInfoList;
PGUID pInterfaceGuid;
PWLAN_CONNECTION_PARAMETERS pWLCP;
PWLAN_AVAILABLE_NETWORK_LIST pNetworkList;
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 < 10; i++){
pInterfaceGuid = &pInterfaceInfoList->InterfaceInfo[pInterfaceInfoList->dwIndex].InterfaceGuid;
if(connect){
for(int j=0; j<10; j++){
if(Interfaces[j].InterfaceGuid == *pInterfaceGuid){
pWLCP = (PWLAN_CONNECTION_PARAMETERS)WlanAllocateMemory(sizeof(WLAN_CONNECTION_PARAMETERS));
pWLCP->strProfile = Interfaces[j].strProfileName;
pWLCP->wlanConnectionMode = 0;
pWLCP->pDot11Ssid = NULL; //pDot11_DDSI;
pWLCP->pDesiredBssidList = NULL;
pWLCP->dot11BssType = 1;
pWLCP->dwFlags = 0;//0xF;
Result |= (ERROR_SUCCESS == WlanConnect(hClient, pInterfaceGuid, pWLCP, NULL));
WlanFreeMemory(pWLCP);
}
}
}
else if(ERROR_SUCCESS == WlanGetAvailableNetworkList(hClient, pInterfaceGuid, 1, NULL, &pNetworkList)){
for(int j=0; j < pNetworkList->dwNumberOfItems; j++){
if(pNetworkList->Network[j].dwFlags & WLAN_AVAILABLE_NETWORK_CONNECTED){
lstrcpynW(Interfaces[i].strProfileName, pNetworkList->Network[j].strProfileName, 256);
Interfaces[i].InterfaceGuid = *pInterfaceGuid;
Result |= (ERROR_SUCCESS == WlanDisconnect(hClient, pInterfaceGuid, NULL));
}
}
}
}
WlanFreeMemory(pInterfaceInfoList);
}
WlanCloseHandle(hClient, NULL);
}
return Result;
}
|
Adáptalo a tu necesidad.
Saludos. |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mar 29 Sep, 2015 10:28 pm Asunto: |
|
|
Gracias por tomarte la molestia de revisarlo.
Un saludo y de nuevo... MUCHAS GRACIAS. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mie 30 Sep, 2015 11:09 am Asunto: |
|
|
escafandra, con tu permiso voy a poner el CODIGO en Tips & Tricks ya que el código esta muy enredado. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|