Address Mac Depuis IP / Ordi en vb.net

[Résolu]
Signaler
Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011
-
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
-
Bonjour,

je galère pour retrouver l'adresse mac d'une carte réseau d'un poste distant à partir de son nom ou bien de son adresse ip (Je sais trouver l'ip depuis le nom).

Ma fonctions en vb6 tourne tres bien (appel de sendarp via api.) Mais en Net je ne trouve pas la solution sachant que via WMI cela ne m'interresse pas puisque si le poste est équipé de xp sp2 ben sa marche plus ! (le firewall bloque l'acces wmi).

COlive.
Deux intellectuels assis iront moins loin qu'un con qui marche. Pensez-y !

13 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Tu as raison ! VB.NET ne supporte pas les string de longueur fixe (string * x).

Il serait conseillé de remplacer un
Dim s as string * 10
par
dim s as string
s=string$(10," ")

D'autre part, dans les fonctions (api ou autres), il ne faut plus utiliser les "as Any" et les remplacer par as String ou as Long, suivant le type attendu. De même, le as optional devient as optional = 0.

J'ai trouvé une adresse qui énumère un certain nombre de différences en vb6 et vb.net, ça peut t'être utile :

http://lassalle.free.fr/pc/themes.html
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 82 internautes nous ont dit merci ce mois-ci

Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011

Personne ???

COlive.
Deux intellectuels assis iront moins loin qu'un con qui marche. Pensez-y !
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Salut,

Tu ne peux pas réutiliser ta fonction VB6 dans .NET ?

Cordialement, CanisLupus
Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011

ben malheureusement non, les apis ne fonctionnent pas sous .net. Je ne comprend pas pourquoi.



COlive.
Deux intellectuels assis iront moins loin qu'un con qui marche. Pensez-y !
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Je ne suis pas encore très fortiche en .NET mais je pense qu'on peut faire fonctionner des API.
J'ai trouvé un tit exemple qui pourrait t'inspirer :

http://www.dotnet247.com/247reference/msgs/44/221057.aspx

Cordialement, CanisLupus
Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011

Je connais bien la dll puisque je l'utilise sous vb6, mais mon problème est que justement sous vb.net elle ne me retourne que des 00

Je ne dois pas l'appeler comme il faut et la source du lien ci dessus n'est pas du vb.net et je n'arrive pas à la convertir en vb.net avec succés (afin de faire fonctionner correctement cette dll)

COlive.
Deux intellectuels assis iront moins loin qu'un con qui marche. Pensez-y !
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Oups, l'étourdi, je ne t'ai pas copié la bonne adresse.

Celle-là donne un exemple de déclaration et d'appel d'une API en VB.NET

http://www.freevbcode.com/ShowCode.asp?ID=2707

Cordialement, CanisLupus
Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011

ben en fait j'ai pas vraiment de soucis pour utiliser les APIs (voir mes codes), j'ai des soucis pour utiliser cette dll là en particulier et aussi celle de wininet.dll.
Les autres, elles fonctionnent très bien (voir mes sources)

COlive.
Deux intellectuels assis iront moins loin qu'un con qui marche. Pensez-y !
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Alors là, je sèche.

Comme j'ai dit, je débute en VB.NET et les essais que j'ai fait avec des api ont fonctionné jusqu'à maintenant. Pour wininet.dll, je n'ai pas encore vu. J'essaierai ça demain.

Au fait, je dis peut être une c....... mais ca ne pourrait pas être un prob d'inscription en registry ?

Cordialement, CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
J'ai trouvé cette adresse, mais pas testé, regarde si ça te convient. Parait que ça peut fonctionner en vbnet. Je ne pourrai tester que demain.

http://vbnet.mvps.org/index.html?code/network/macaddressremote.htm

Cordialement, CanisLupus
Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011

Et bien en fait j'avais déjà trouvé cette source qui correspond à 99% à celle que j'ai en vb6.
Et en .net cela ne tourne pas.
Je pense que mon problème ne vient pas dans la déclaration des apis / dll mais plutot dans celle de la déclaration des variables string en mode buffer (je sais pas si je suis clair).
En fait en vb6 il est facile de déclarer une string et de lui donner une longueur précise :

sOrgPath = String(MAX_PATH, 0)

sOrgPath aura alors la longueur MAX_PATH et sera rempli de 0.

Et j'avoue que j'ai pas trouvé comment faire ça en .net.

COlive.
Deux intellectuels assis iront moins loin qu'un con qui marche. Pensez-y !
Messages postés
91
Date d'inscription
mercredi 27 février 2002
Statut
Membre
Dernière intervention
3 décembre 2011

J'ai pas trouvé de solution mais une petite parade pour pouvoir faire fonctionner ma source.
En fait j'ai créer une dll sous vb6 que j'utilise sous vb.net puisque l'api contenant sendarp ne veut pas tourner.
Voir ma source WinAdmin catégorie vb.net pour une amélioration future entierement .net.

Merci de votre aide quand même, vos liens mon apporter de nombreuses informations.

COlive.
Deux intellectuels assis iront moins loin qu'un con qui marche. Pensez-y !

Pensez à cliquer sur réponse acceptées quand votre problème est solutionné.
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
J'arive un peu tard, mais çà pourra servir à d'autre ...

Imports System.Net
Imports System.Net.Sockets

Declare Function SendARP Lib "iphlpapi.dll" (ByVal DestIP As Integer, ByVal SrcIP As Integer, ByVal pMacAddr As Byte(), ByRef PhyAddrLen As Integer) As Integer

Private Function SendArp(ByVal IP As String) As String
        Dim addr As IPAddress = IPAddress.Parse(IP)
        Dim mac() As Byte = {0, 0, 0, 0, 0, 0}
        Dim len As Integer = mac.Length
        Dim ipadd As Integer = CType(addr.Address, Integer)

        SendArp(ipadd, 0, mac, len)
        Dim macAddress As String = BitConverter.ToString(mac, 0, len)

        Return macAddress
    End Function

<!-- blocPrincipal -->
 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <