How can I search an especific Computer in Visual basic??
Please help me!
thanks!
Printable View
How can I search an especific Computer in Visual basic??
Please help me!
thanks!
Search? Do you mean for files?
Nop, I need to find an especific computer in my LAN
tnks :)
This will enumerate all domain/computers on a LAN or Workgroup.
Add your code to match a computer name to the one you are looking for.
Usage...VB Code:
'IN A MODULE Option Explicit Public Type SERVER_INFO_100 sv100_platform_id As Long sv100_name As Long End Type Public Const SV_TYPE_DOMAIN_ENUM As Long = &H80000000 Public Const SV_TYPE_ALL As Long = &HFFFFFFFF Public Const SV_TYPE_SQLSERVER As Long = &H4 Public Const MAX_PREFERRED_LENGTH As Long = -1 Public Const NERR_SUCCESS As Long = 0& Public Const ERROR_REQ_NOT_ACCEP As Long = 71& Public Const ERROR_MORE_DATA As Long = 234& Public Const NERR_BASE As Long = 2100 Public Const NERR_InvalidComputer = (NERR_BASE + 251) Public 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 Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pTo As Any, uFrom As Any, ByVal lSize As Long) Public Declare Function NetApiBufferFree Lib "netapi32" (ByVal Buffer As Long) As Long Public Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long Public Function GetServers(sDomain As String, sType As Long) As String() 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 nStructSize = LenB(se100) success = NetServerEnum(0&, 100, bufptr, MAX_PREFERRED_LENGTH, dwEntriesread, dwTotalentries, sType, StrPtr(sDomain), dwResumehandle) 'success = 71 'NO ACTIVE 'DOMAIN' If success = NERR_SUCCESS And success <> ERROR_MORE_DATA Then Dim compNames() As String ReDim compNames(dwEntriesread) For Cnt = 0 To dwEntriesread - 1 CopyMemory se100, ByVal bufptr + (nStructSize * Cnt), nStructSize compNames(Cnt) = GetPointerToByteStringW(se100.sv100_name) DoEvents Next End If Call NetApiBufferFree(bufptr) GetServers = compNames End Function Public Function GetPointerToByteStringW(ByVal dwData As Long) As String 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
Enjoy :)VB Code:
'BEHIND A FORM WITH TWO COMBO'S (cboDomain and cboComputer) Private Sub Form_Load() Dim compNames() As String 'SETUP THE DOMAIN COMBO BOX compNames = GetServers(vbNullString, SV_TYPE_DOMAIN_ENUM) For x = LBound(compNames) To UBound(compNames) - 1 cboDomain.AddItem compNames(x) Next cboDomain.ListIndex = 0 End Sub Private Sub cboDomain_Click() 'NEED TO CLEAR CBOCOMPUTER AND RELOAD WITH COMPUTERS IN THE NEWLY SELECTED DOMAIN 'SETUP THE COMPUTER COMBO BOX On Error GoTo No_Bugs Dim compNames() As String Dim compName As String Dim x As Integer cboComputer.Clear x = 0 compNames = GetServers(cboDomain.Text, SV_TYPE_ALL) If UBound(compNames) > 0 Then For x = LBound(compNames) To UBound(compNames) - 1 cboComputer.AddItem compNames(x) Next cboComputer.ListIndex = 0 End If Exit Sub No_Bugs: If Err.Number = "9" Then cboDomain.RemoveItem (cboDomain.ListIndex) cboDomain.ListIndex = 0 compNames = GetServers(cboDomain.Text, SV_TYPE_ALL) Resume Else MsgBox Err.Number & " - " & Err.Description, vbOKOnly + vbExclamation, App.ProductName End If End Sub