Lister les réseaux wifi disponibles

haddreezy Messages postés 40 Date d'inscription lundi 14 mai 2012 Statut Membre Dernière intervention 8 août 2012 - 27 juil. 2012 à 11:30
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 8 août 2012 à 14:52
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

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
31 juil. 2012 à 16:03
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é. -
0
haddreezy Messages postés 40 Date d'inscription lundi 14 mai 2012 Statut Membre Dernière intervention 8 août 2012 4
2 août 2012 à 09:31
Merci pour ces liens, ils vont m'être d'une grande utilité
0
haddreezy Messages postés 40 Date d'inscription lundi 14 mai 2012 Statut Membre Dernière intervention 8 août 2012 4
8 août 2012 à 14:20
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
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
8 août 2012 à 14:52
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é. -
0
Rejoignez-nous