Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Rosalie Mignon wrote:Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Rosalie Mignon wrote:
Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
FAQ VB: http://faq.vb.free.fr/
Rosalie Mignon wrote:Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Rosalie Mignon wrote:Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Rosalie Mignon wrote:
Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
FAQ VB: http://faq.vb.free.fr/
Rosalie Mignon wrote:Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
tout fonctionne effectivement, merci
mais maintenant je voudrais modifier l'adresse IP et ces noms de
machine à distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.
tout fonctionne effectivement, merci
mais maintenant je voudrais modifier l'adresse IP et ces noms de
machine à distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.
tout fonctionne effectivement, merci
mais maintenant je voudrais modifier l'adresse IP et ces noms de
machine à distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.
tout fonctionne effectivement, merci
mais maintenant je voudrais modifier l'adresse IP et ces noms de machine à
distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.
merci d'avance.
"Jean-marc" a écrit dans le
message de news: 46b45dc8$0$14241$Rosalie Mignon wrote:Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable
version globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un
buffer interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
tout fonctionne effectivement, merci
mais maintenant je voudrais modifier l'adresse IP et ces noms de machine à
distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.
merci d'avance.
"Jean-marc" <NO_SPAM_jean_marc_n2@yahoo.fr.invalid> a écrit dans le
message de news: 46b45dc8$0$14241$ba620e4c@news.skynet.be...
Rosalie Mignon wrote:
Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable
version globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un
buffer interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
FAQ VB: http://faq.vb.free.fr/
tout fonctionne effectivement, merci
mais maintenant je voudrais modifier l'adresse IP et ces noms de machine à
distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.
merci d'avance.
"Jean-marc" a écrit dans le
message de news: 46b45dc8$0$14241$Rosalie Mignon wrote:Bonjour
novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.
merci d'avance pour tous vos commentaires et aides
Hello,
pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".
J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.
Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html
' --
Option Explicit
'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500
'Masque pour obtenir la version OS Majeure a partir de la variable
version globale
Private Const MAJOR_VERSION_MASK As Long = &HF
Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type
Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long
Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)
Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long
Public Function GetServers(sDomain As String) As String
'liste de tous les serveurs dans un domaine
Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String
nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)
If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien
For cnt = 0 To dwEntriesread - 1
CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"
Next
End If
'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)
'on retourne le string contenants les noms separés par des "|"
GetServers = resultat
End Function
Public Function GetPointerToByteStringW(ByVal dwData As Long) As String
'fonction auxilliare qui recoit un pointeur vers une chaine dans un
buffer interne
'Windows et la convertit en String exploitable en VB
Dim tmp() As Byte
Dim tmplen As Long
If dwData <> 0 Then
tmplen = lstrlenW(dwData) * 2
If tmplen <> 0 Then
ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp
End If
End If
End Function
Private Sub Command1_Click()
Dim maliste As String
maliste = GetServers(vbNullString)
End Sub
' ----------------------
Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/
(j'ai pas testé, mais à vue de nez ça à l'air ok).
Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm
Bref avec tout ça, tu dervais avoir ton bonheur!
Bonne prog,
--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/