FAQ WinDevConsultez toutes les FAQ
Nombre d'auteurs : 3, nombre de questions : 71, dernière mise à jour : 25 novembre 2018 Ajouter une question
Cette FAQ ne prétend pas traiter de tous les trucs & astuces ou de tous les problèmes rencontrés par les utilisateurs de WinDev : elle a été créée via l'analyse des questions les plus fréquentes posées sur le forum de ce site, et sur les connaissances des différents rédacteurs. Nous espérons voir le nombre de questions/réponses augmenter régulièrement, pour couvrir le plus de thèmes possibles. Pour y participer, suivez le mode d'emploi donné dans la 2ème question !
Code windev : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | FONCTION getAdresseMACDistante(p_szAdresseIP=NetAdresseIP(),p_szErr="") // Version 1.00 pour WD7 (WD55 voir les déclarations) // (c) Octobre 2002 Romain PETIT (mailto:rompetit@ifrance.com) // Sous licence WD-LIBRE (http://www.windevasso.org) // But : obtenir l'adresse MAC à partir d'une adresse IP (réseau local) // ATTENTION, ne fonctionne que sous 2K/XP (nécessite le SP6 sous NT ?) // Paramètres : adresse IP au format xx.xx.xx.xx // Retour : chaine, adresse MAC (6 nombres en hexa séparés par un '-') // en cas d'erreur, la fonction retourne une chaine vide et la chaine sErr passée par adresse peut être récupérée. // Notes : il ne s'agit pas ici de récupérer l'adresse MAC de machines sur Internet // mais de machines sur un réseau local (non testé avec routeurs). // Dans le cas d'une connexion ADSL Ethernet, NetAdresseIP() renvoie l'adresse // attribuée par le provider, la fonction renvoie donc l'adresse MAC de la // machine établissant la connexion (modem Ethernet par exemple) // Références API: // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/sendarp.asp // Exemple : // sAdrMAC est une chaine // sRetourErreur est une chaine="" // sIPDist est une chaine = "192.168.0.1" // sAdrMAC = fg_AdresseMACDistante(sIPDist, sRetourErreur) // SI sAdrMAC <>"" ALORS // info("L'adresse MAC de "+ sIPDist + " est "+sAdrMAC) // SINON // erreur("L'adresse MAC de "+ sIPDist + " n'a pas pu être obtenue : "+ sRetourErreur) // FIN SI p_szAdresseIP ~="" ALORS p_szAdresseIP = NetAdresseIP() SI SysVersionWindows(sysVersionPlateForme)<>"NT" ALORS p_szErr = "Cette fonction n'est pas disponible avec la version de Windows installée." RENVOYER "" FIN szAdresseIP est une chaîne ASCIIZ sur 255 = p_szAdresseIP lAdresseIP est un entier sans signe lAdresseMAC est un entier sans signe tlAdresseMAC est un tableau fixe de 6 entiers sans signe sur 1 octet lNbAdrPhys est un entier sans signe lRet est un entier i est un entier szRetour est une chaîne="" // Conversion de l'adresse IP en entier long lAdresseIP = AppelDLL32("wsock32.dll", "inet_addr", &szAdresseIP) SI lAdresseIP <> 0 ALORS lNbAdrPhys = 6 // Récupération de l'adresse MAC lRet = AppelDLL32("iphlpapi.dll", "SendARP", lAdresseIP, 0,&lAdresseMAC, &lNbAdrPhys) SI lRet=0 ALORS SI lAdresseMAC<> 0 ET lNbAdrPhys<> 0 ALORS // La valeur retournée est un pointeur sur un tableau // que l'on copie dans le tableau de 6 octets prévu Transfert(&tlAdresseMAC, &lAdresseMAC, 6)//6*1 octet // On peut utiliser : AppelDLL32("kernel32","RtlMoveMemory",&tlAdresseMAC,&lAdresseMAC,6) // Pour chaque élément du tableau, on reconstruit la chaine en hexa POUR i=1 A lNbAdrPhys szRetour += NumériqueVersChaîne(tlAdresseMAC[i],"02X")+"-" FIN szRetour = Gauche(szRetour, Taille(szRetour)-1) p_szErr = "" SINON p_szErr = "La récupération de l'adresse MAC à partir de l'IP "+ p_szAdresseIP+" a échoué." FIN SINON p_szErr = "La récupération de l'adresse MAC à partir de l'IP "+ p_szAdresseIP+" a échoué." FIN SINON p_szErr = "L'adresse IP "+p_szAdresseIP+" n'a pas pu être convertie. Vérifiez le format." FIN RENVOYER szRetour |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.