рдпрд╣ рдЬреНрдЮрд╛рди рд╣рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ?
QuickGraph
рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдореБрдлреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ - рдХреНрд╡рд┐рдХрдЧреНрд░рд╛рдлред рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд╛рдо рд╕реНрдерд╛рди рдЖрдпрд╛рдд рдХрд░реЗрдВ:
Imports QuickGraph
рдПрдХ рдЧреНрд░рд╛рдл рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:
Dim graph As New BidirectionalGraph(Of Object, IEdge(Of Object))
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдХрдВрдкреНрдпреВрдЯрд░ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рдл рдХреЗ рдиреЛрдб рд╣реИрдВред рдиреЛрдб рдЬреЛрдбрд╝реЗрдВ:
graph.AddVertex("")
рд╣рдо рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреА рд╕реВрдЪреА рд▓реЗрдВрдЧреЗ:
Dim de As New DirectoryServices.DirectoryEntry
Dim search As New DirectorySearcher(de)
search.Filter = "(objectCategory=computer)"
Dim results As SearchResultCollection = search.FindAll()
For i As Integer = 0 To results.Count - 1
Dim de2 As DirectoryEntry = results(i).GetDirectoryEntry
Dim ComputerName As String = CType(de2.InvokeGet("cn"), String)
graph.AddVertex(ComputerName)
Next
рдорд╣рд╛рди, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЧреНрд░рд╛рдл рдХреА рддрд░рд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реИред рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╣рдорд╛рд░рд╛ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕рднреА рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдВрджреБ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╡реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ - рд░рд╛рдЙрдЯрд░ (рд░рд╛рдЙрдЯрд░)ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдПрдХ рд░рд╛рдЙрдЯрд░ рди рд╣реЛ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рджреГрд╢реНрдп рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реАрдзреЗ рдПрдХ рд░рд╛рдЙрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкрддрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдмреЛрд░реНрдб рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдЧреЗрдЯрд╡реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред
WMI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдирд╛ ...
Private Function GetGateway(ByVal ComputerName As String) As String
Dim s As String = String.Empty
Dim query As ManagementObjectSearcher
Dim queryCollection As ManagementObjectCollection
Dim msc As ManagementScope = New ManagementScope("\\" + ComputerName + "\root\cimv2")
query = New ManagementObjectSearcher(msc, New SelectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration"))
queryCollection = query.Get()
For Each mObject As ManagementObject In queryCollection
Try
If mObject("DefaultIPGateway").ToString <> "" Then
s = mObject("DefaultIPGateway")(0).ToString
End If
Catch
End Try
Next
Return s
End Function
... рд╕рднреА рдЧреЗрдЯрд╡реЗ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЙрдиреНрд╣реЗрдВ рдЧреНрд░рд╛рдлрд╝, рд╕рд╛рде рд╣реА рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
graph.AddVertex("")
рдиреЛрдбреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЗ рд╕рд╛рде, рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рдЧреЗрдЯрд╡реЗ рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ:
graph.AddEdge(New Edge(Of Object)("", ""))
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЧреНрд░рд╛рдл рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИред
рдЧреНрд░рд╛рдл #
рдХреНрд╡рд┐рдХрдЧреНрд░рд╛рдл рдЧреНрд░рд╛рдлрд╝ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП MSAGL, GLEE рдФрд░ рдЧреНрд░рд╛рдлрд╡рд┐рдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЧреНрд░рд╛рдл # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдврд╛рдВрдЪреЗ рдореЗрдВ WPF рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЧреНрд░рд╛рдлрд╝ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рд╣рдо рдЧреНрд░рд╛рдлрд▓реЗрдпреЙрдЯ рдлреЙрд░реНрдо рдкрд░ рджрд┐рдП рдЧрдП рдврд╛рдВрдЪреЗ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдЧреНрд░рд╛рдл рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд░реЗрдЦрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
GraphLayout.Graph = graph
рдФрд░ рд╣рдо рд╕рднреА рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЧреНрд░рд╛рдл # рдмрд╛рдХреА рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦреЗрдЧрд╛ред
рд╕рдВрджрд░реНрдн:
QuickGraph
рдЧреНрд░рд╛рдл #