Lister les réseaux wifi disponibles

Signaler
Messages postés
40
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
8 août 2012
-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
-
Bonjour,

voila un bon moment maintenant que j'essaie d'écrire un petit programme pour lister les réseaux wifi captés par la carte wifi de mon pc. Je voudrais utiliser l'API Microsoft Native Wifi. J'ai recensé toutes les fonctions dont j'ai besoin pour réaliser ce programme, WlanOpenHandle(), WlanCloseHandle(), WlanEnumInterfaces(), WlanFreeMemory(),WlanGetAvailablenetworkList(). Mon problème est que je ne trouve que des exemples en C ou C++ et que j'ai beaucoup de mal à transposer en C#, sachant que je ne suis que débutant.
Si quelqu'un connait à peu près la trame qu'il faut que je suive pour réaliser ce programme j'en serai ravi.

Merci d'avance

4 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Salut

Je pense que ces pages Stackoverflow ou PInvoke.net peuvent t'aider.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
40
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
8 août 2012
3
Merci pour ces liens, ils vont m'être d'une grande utilité
Messages postés
40
Date d'inscription
lundi 14 mai 2012
Statut
Membre
Dernière intervention
8 août 2012
3
Me revoila,

je me suis aidé des liens que vous m'avez fournis, et j'ai donc écrit un petit code pour récupérer la liste des réseaux wifi disponibles.
IntPtr handle = IntPtr.Zero;
IntPtr ptr = new IntPtr();
           WLAN_INTERFACE_INFO_LIST wlanInterfaceInfoList = new WLAN_INTERFACE_INFO_LIST(ptr);

            IntPtr ppAvailableNetworkList = new IntPtr();
            Guid pInterfaceGuid = ((WLAN_INTERFACE_INFO)wlanInterfaceInfoList.InterfaceInfo[0]).InterfaceGuid;
            WlanGetAvailableNetworkList(handle, ref pInterfaceGuid, WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES, new IntPtr(), ref  ppAvailableNetworkList);
            WLAN_AVAILABLE_NETWORK_LIST wlanAvailableNetworkList = new WLAN_AVAILABLE_NETWORK_LIST(ppAvailableNetworkList);
            WlanFreeMemory(ppAvailableNetworkList);
            for (int j = 0; j < wlanAvailableNetworkList.dwNumberOfItems; j++)
            {
                WLAN_AVAILABLE_NETWORK network = wlanAvailableNetworkList.wlanAvailableNetwork[j];
                Console.WriteLine("Available Network: ");
                Console.WriteLine("SSID: " + network.dot11Ssid.ucSSID);
                Console.WriteLine("Encrypted: " + network.bSecurityEnabled);
                Console.WriteLine("Signal Strength: " + network.wlanSignalQuality);
                Console.WriteLine("Default Authentication: " +
                    network.dot11DefaultAuthAlgorithm.ToString());
                Console.WriteLine("Default Cipher: " + network.dot11DefaultCipherAlgorithm.ToString());
                Console.WriteLine();

Simplement j'ai une erreur qui m'empêche de tester mon programme:

Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.
Cette erreur se rapporte à cette ligne de code:

public WLAN_INTERFACE_INFO_LIST(IntPtr pList)
            {
                // The first 4 bytes are the number of WLAN_INTERFACE_INFO structures.
                dwNumberOfItems = Marshal.ReadInt32(pList, 0);


J'ai cherché un peu partout, je me dis que c'est peut être une histoire de droits d'administration, car je travaille sur un ordinateur sur lequel je n'ai pas tous les droits, mais je ne vois pas lesquels peuvent être concernés par mon programme.

Si vous avez une idée je suis tout ouïe! Merci
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
J'avoue que, n'ayant jamais réellement utilisé de dll natives, je ne peux pas vraiment t'aider.
Cependant, j'enlève la réponse acceptée, afin que plus de monde vienne pour apporter leur lumière.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -