2011-06-11 27 views
5

estoy usando la API de conexión Wi-Fi Administrado y el código de ejemplo:Conectarse a una red inalámbrica en C#

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); 

He actualizado el código para usar mi SSID y la clave, pero no sé cómo debo obtener la dirección MAC.

+0

posible duplicado de [obtener la dirección MAC de la red wireless para conectarse mediante WlanApi C#] (http: // stackoverflow. com/questions/4364475/get-mac-address-for-wirless-network-to-connect-using-wlanapi-c) –

Respuesta

0

Hay una gran API SimpleWifi para C# y se puede utilizar como debajo:

string ssid = "abc wifi network"; 
      AccessPoint selectedAP = null; 
      bool isApFound = false; 

      foreach (AccessPoint ap in accessPoints) 
      { 
       if (ap.Name.Equals(ssid, StringComparison.InvariantCultureIgnoreCase)) 
       { 
        selectedAP = ap; 
        isApFound = true; 
        break; 
       }      
      } 

      if(!isApFound) 
      { 

       MessageBox.Show("SSID: " + ssid + " not found in range."); 
       return; 

      } 

      // Auth 
      AuthRequest authRequest = new AuthRequest(selectedAP); 
      bool overwrite = true; 

      if (authRequest.IsPasswordRequired) 
      { 
       if (selectedAP.HasProfile) 
       // If there already is a stored profile for the network, we can either use it or overwrite it with a new password. 
       { 
        var confirmResult = MessageBox.Show("A network profile already exist, do you want to use it ?", "Confirm Yes ?", MessageBoxButtons.YesNo); 
        if (confirmResult == DialogResult.Yes) 
        { 
         overwrite = false; 
        } 
       } 

       if (overwrite) 
       { 
        if (authRequest.IsUsernameRequired) 
        { 

         authRequest.Username = Microsoft.VisualBasic.Interaction.InputBox("Please enter Wifi username", "Wifi Username", "", -1, -1); 

        } 

        authRequest.Password = PasswordPrompt(selectedAP); 

        if (authRequest.IsDomainSupported) 
        { 
         authRequest.Domain = Microsoft.VisualBasic.Interaction.InputBox("Please enter Wifi domain", "Wifi Domain", "", -1, -1); 
        } 
       } 
      } 

      selectedAP.ConnectAsync(authRequest, overwrite, OnConnectedComplete); 
Cuestiones relacionadas