IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

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 !

SommaireConcepts, WLangage et environnementSystèmeRéseaux (1)
précédent sommaire suivant
 

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

Mis à jour le 18 juillet 2009

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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.