Je r=E9alise actuellement une application client/serveur en=20
vb.net. Je souhaiterai pouvoir ins=E9rer la liste des=20
serveurs de donn=E9es disponibles sur le r=E9seau dans une=20
listbox. ESt-ce que quelqu'un connait la proc=E9dure =E0=20
suivre?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut JL! :O)
regarde ce message : http://groups.google.com/groups?threadm=uEEpVZ0aEHA.904%40TK2MSFTNGP09.phx.gbl
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic classique http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/ http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/ "JL" a écrit dans le message de news:2dff401c46bfb$d1688db0$ Bonjour,
Je réalise actuellement une application client/serveur en vb.net. Je souhaiterai pouvoir insérer la liste des serveurs de données disponibles sur le réseau dans une listbox. ESt-ce que quelqu'un connait la procédure à suivre?
Merci d'avance,
JL.
Salut JL! :O)
regarde ce message :
http://groups.google.com/groups?threadm=uEEpVZ0aEHA.904%40TK2MSFTNGP09.phx.gbl
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"JL" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:2dff401c46bfb$d1688db0$a601280a@phx.gbl...
Bonjour,
Je réalise actuellement une application client/serveur en
vb.net. Je souhaiterai pouvoir insérer la liste des
serveurs de données disponibles sur le réseau dans une
listbox. ESt-ce que quelqu'un connait la procédure à
suivre?
regarde ce message : http://groups.google.com/groups?threadm=uEEpVZ0aEHA.904%40TK2MSFTNGP09.phx.gbl
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic classique http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/ http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/ "JL" a écrit dans le message de news:2dff401c46bfb$d1688db0$ Bonjour,
Je réalise actuellement une application client/serveur en vb.net. Je souhaiterai pouvoir insérer la liste des serveurs de données disponibles sur le réseau dans une listbox. ESt-ce que quelqu'un connait la procédure à suivre?
Merci d'avance,
JL.
Zoury
J'ai "wrapper" le code dans une classe pour ceux que ça intéresse :
'*** ' CNetworkManagement class Option Explicit On
Private Const MAX_PREFERRED_LENGTH As Int32 = -1 Private Const NERR_SUCCESS As Int32 = 0 Private Const ERROR_MORE_DATA As Int32 = 234
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _ Private Structure SERVER_INFO_101 Public dwPlatformID As Int32 Public lpszServerName As String Public dwVersionMajor As Int32 Public dwVersionMinor As Int32 Public dwType As Int32 Public lpszComment As String End Structure
<DllImport("netapi32.dll", SetLastError:=True)> _ Private Shared Sub NetApiBufferFree _ ( _ ByVal lpBuffer As IntPtr _ ) ' End Sub
<DllImport("netapi32.dll", CharSet:=CharSet.Unicode, SetLastError:=True)> _ Private Shared Function NetServerEnum _ ( _ ByVal servername As String, _ ByVal level As Int32, _ ByRef bufptr As IntPtr, _ ByVal prefmaxlen As Int32, _ ByRef entriesread As Int32, _ ByRef totalentries As Int32, _ ByVal servertype As ServerType, _ ByVal domain As String, _ ByRef resume_handle As Int32 _ ) As Int32 ' End Function
Public Shared Function GetServerList(Optional ByRef serverType As ServerType = ServerType.stAll) As String()
Dim lpBuffer As IntPtr Dim lpTmpBuffer As IntPtr Dim dwEntriesRead As Int32 Dim dwTotalEntries As Int32 Dim dwResumeHandle As Int32 Dim se101 As SERVER_INFO_101 Dim iRet As Int32 Dim nStructSize As Int32 Dim i As Int32 Dim sServers() As String
If ((iRet = NERR_SUCCESS) And (iRet <> ERROR_MORE_DATA)) Then
' on créer le tableau de noms ReDim sServers(dwEntriesRead - 1)
' lpBuffer pointe sur un tableau de ' pointeur de structure SERVER_INFO_101 ' on doit donc boucler le tableau de pointeur ' afin d'aller extraire les données ' lpTmpBuffer = lpBuffer For i = 0 To dwEntriesRead - 1
' on récupère la structure se101 = Marshal.PtrToStructure(lpTmpBuffer, se101.GetType())
' on conserve le nom du serveur sServers(i) = se101.lpszServerName
' on passe à la structure suivante (Ptr actuel + taille de la structure) lpTmpBuffer = New IntPtr(lpTmpBuffer.ToInt32() + nStructSize)
Next i
End If
' libère le buffer créer par NetServerEnum If (Not lpBuffer.Equals(IntPtr.Zero)) Then NetApiBufferFree(lpBuffer) End If
Return sServers
End Function
End Class '***
exemple d'utilisation : '*** Module Module1
Sub Main()
Dim sServers() As String CNetworkManagement.GetServerList(ServerType.stSQLServer) Dim s As String
Console.WriteLine(sServers.Length.ToString() & " sql servers found :")
For Each s In sServers Console.WriteLine(s) Next
Console.WriteLine() Console.WriteLine("Press Enter to quit ...") Console.ReadLine()
End Sub
End Module '***
Note que ce code fonctionne sur NT, 2000, XP, 2003 server...
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic classique http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/ http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/ "Zoury" a écrit dans le message de news:%
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic classique http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/ http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/ "JL" a écrit dans le message de news:2dff401c46bfb$d1688db0$ Bonjour,
Je réalise actuellement une application client/serveur en vb.net. Je souhaiterai pouvoir insérer la liste des serveurs de données disponibles sur le réseau dans une listbox. ESt-ce que quelqu'un connait la procédure à suivre?
Merci d'avance,
JL.
J'ai "wrapper" le code dans une classe pour ceux que ça intéresse :
'***
' CNetworkManagement class
Option Explicit On
Private Const MAX_PREFERRED_LENGTH As Int32 = -1
Private Const NERR_SUCCESS As Int32 = 0
Private Const ERROR_MORE_DATA As Int32 = 234
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _
Private Structure SERVER_INFO_101
Public dwPlatformID As Int32
Public lpszServerName As String
Public dwVersionMajor As Int32
Public dwVersionMinor As Int32
Public dwType As Int32
Public lpszComment As String
End Structure
<DllImport("netapi32.dll", SetLastError:=True)> _
Private Shared Sub NetApiBufferFree _
( _
ByVal lpBuffer As IntPtr _
)
'
End Sub
<DllImport("netapi32.dll", CharSet:=CharSet.Unicode,
SetLastError:=True)> _
Private Shared Function NetServerEnum _
( _
ByVal servername As String, _
ByVal level As Int32, _
ByRef bufptr As IntPtr, _
ByVal prefmaxlen As Int32, _
ByRef entriesread As Int32, _
ByRef totalentries As Int32, _
ByVal servertype As ServerType, _
ByVal domain As String, _
ByRef resume_handle As Int32 _
) As Int32
'
End Function
Public Shared Function GetServerList(Optional ByRef serverType As
ServerType = ServerType.stAll) As String()
Dim lpBuffer As IntPtr
Dim lpTmpBuffer As IntPtr
Dim dwEntriesRead As Int32
Dim dwTotalEntries As Int32
Dim dwResumeHandle As Int32
Dim se101 As SERVER_INFO_101
Dim iRet As Int32
Dim nStructSize As Int32
Dim i As Int32
Dim sServers() As String
If ((iRet = NERR_SUCCESS) And (iRet <> ERROR_MORE_DATA)) Then
' on créer le tableau de noms
ReDim sServers(dwEntriesRead - 1)
' lpBuffer pointe sur un tableau de
' pointeur de structure SERVER_INFO_101
' on doit donc boucler le tableau de pointeur
' afin d'aller extraire les données
'
lpTmpBuffer = lpBuffer
For i = 0 To dwEntriesRead - 1
' on récupère la structure
se101 = Marshal.PtrToStructure(lpTmpBuffer, se101.GetType())
' on conserve le nom du serveur
sServers(i) = se101.lpszServerName
' on passe à la structure suivante (Ptr actuel + taille de
la structure)
lpTmpBuffer = New IntPtr(lpTmpBuffer.ToInt32() +
nStructSize)
Next i
End If
' libère le buffer créer par NetServerEnum
If (Not lpBuffer.Equals(IntPtr.Zero)) Then
NetApiBufferFree(lpBuffer)
End If
Return sServers
End Function
End Class
'***
exemple d'utilisation :
'***
Module Module1
Sub Main()
Dim sServers() As String CNetworkManagement.GetServerList(ServerType.stSQLServer)
Dim s As String
Console.WriteLine(sServers.Length.ToString() & " sql servers found
:")
For Each s In sServers
Console.WriteLine(s)
Next
Console.WriteLine()
Console.WriteLine("Press Enter to quit ...")
Console.ReadLine()
End Sub
End Module
'***
Note que ce code fonctionne sur NT, 2000, XP, 2003 server...
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"Zoury" <yanick_lefebvre@hotmail.com> a écrit dans le message de
news:%23TnaAvZbEHA.3752@TK2MSFTNGP12.phx.gbl...
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic classique
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"JL" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:2dff401c46bfb$d1688db0$a601280a@phx.gbl...
Bonjour,
Je réalise actuellement une application client/serveur en
vb.net. Je souhaiterai pouvoir insérer la liste des
serveurs de données disponibles sur le réseau dans une
listbox. ESt-ce que quelqu'un connait la procédure à
suivre?
Private Const MAX_PREFERRED_LENGTH As Int32 = -1 Private Const NERR_SUCCESS As Int32 = 0 Private Const ERROR_MORE_DATA As Int32 = 234
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _ Private Structure SERVER_INFO_101 Public dwPlatformID As Int32 Public lpszServerName As String Public dwVersionMajor As Int32 Public dwVersionMinor As Int32 Public dwType As Int32 Public lpszComment As String End Structure
<DllImport("netapi32.dll", SetLastError:=True)> _ Private Shared Sub NetApiBufferFree _ ( _ ByVal lpBuffer As IntPtr _ ) ' End Sub
<DllImport("netapi32.dll", CharSet:=CharSet.Unicode, SetLastError:=True)> _ Private Shared Function NetServerEnum _ ( _ ByVal servername As String, _ ByVal level As Int32, _ ByRef bufptr As IntPtr, _ ByVal prefmaxlen As Int32, _ ByRef entriesread As Int32, _ ByRef totalentries As Int32, _ ByVal servertype As ServerType, _ ByVal domain As String, _ ByRef resume_handle As Int32 _ ) As Int32 ' End Function
Public Shared Function GetServerList(Optional ByRef serverType As ServerType = ServerType.stAll) As String()
Dim lpBuffer As IntPtr Dim lpTmpBuffer As IntPtr Dim dwEntriesRead As Int32 Dim dwTotalEntries As Int32 Dim dwResumeHandle As Int32 Dim se101 As SERVER_INFO_101 Dim iRet As Int32 Dim nStructSize As Int32 Dim i As Int32 Dim sServers() As String
If ((iRet = NERR_SUCCESS) And (iRet <> ERROR_MORE_DATA)) Then
' on créer le tableau de noms ReDim sServers(dwEntriesRead - 1)
' lpBuffer pointe sur un tableau de ' pointeur de structure SERVER_INFO_101 ' on doit donc boucler le tableau de pointeur ' afin d'aller extraire les données ' lpTmpBuffer = lpBuffer For i = 0 To dwEntriesRead - 1
' on récupère la structure se101 = Marshal.PtrToStructure(lpTmpBuffer, se101.GetType())
' on conserve le nom du serveur sServers(i) = se101.lpszServerName
' on passe à la structure suivante (Ptr actuel + taille de la structure) lpTmpBuffer = New IntPtr(lpTmpBuffer.ToInt32() + nStructSize)
Next i
End If
' libère le buffer créer par NetServerEnum If (Not lpBuffer.Equals(IntPtr.Zero)) Then NetApiBufferFree(lpBuffer) End If
Return sServers
End Function
End Class '***
exemple d'utilisation : '*** Module Module1
Sub Main()
Dim sServers() As String CNetworkManagement.GetServerList(ServerType.stSQLServer) Dim s As String
Console.WriteLine(sServers.Length.ToString() & " sql servers found :")
For Each s In sServers Console.WriteLine(s) Next
Console.WriteLine() Console.WriteLine("Press Enter to quit ...") Console.ReadLine()
End Sub
End Module '***
Note que ce code fonctionne sur NT, 2000, XP, 2003 server...
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic classique http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/ http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/ "Zoury" a écrit dans le message de news:%
-- Cordialement Yanick Lefebvre - MVP pour Visual Basic classique http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/ http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/ "JL" a écrit dans le message de news:2dff401c46bfb$d1688db0$ Bonjour,
Je réalise actuellement une application client/serveur en vb.net. Je souhaiterai pouvoir insérer la liste des serveurs de données disponibles sur le réseau dans une listbox. ESt-ce que quelqu'un connait la procédure à suivre?