Address Mac Depuis IP / Ordi en vb.net

Résolu
COlive Messages postés 91 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 3 décembre 2011 - 28 janv. 2005 à 12:23
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 - 3 mars 2008 à 19:29
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

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
8 févr. 2005 à 19:00
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
COlive Messages postés 91 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 3 décembre 2011
4 févr. 2005 à 08:24
Personne ???

COlive.
Deux intellectuels assis iront moins loin qu'un con qui marche. Pensez-y !
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
4 févr. 2005 à 10:36
Salut,

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

Cordialement, CanisLupus
0
COlive Messages postés 91 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 3 décembre 2011
4 févr. 2005 à 18:13
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
4 févr. 2005 à 19:42
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
0
COlive Messages postés 91 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 3 décembre 2011
7 févr. 2005 à 11:05
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 !
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
7 févr. 2005 à 18:38
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
0
COlive Messages postés 91 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 3 décembre 2011
7 févr. 2005 à 18:52
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 !
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
7 févr. 2005 à 19:47
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
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
7 févr. 2005 à 20:10
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
0
COlive Messages postés 91 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 3 décembre 2011
8 févr. 2005 à 09:12
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 !
0
COlive Messages postés 91 Date d'inscription mercredi 27 février 2002 Statut Membre Dernière intervention 3 décembre 2011
18 févr. 2005 à 09:58
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é.
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
3 mars 2008 à 19:29
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 ~
 > ^ <
0