Page 1 of 1

How do i get list of IP Address of computers in a network ?

Posted: Thu Sep 18, 2014 5:58 am
by shahir.fivewin
How do i get list of IP Address of computers in a network ?

Re: How do i get list of IP Address of computers in a network ?

Posted: Thu Sep 18, 2014 6:21 am
by cnavarro

Re: How do i get list of IP Address of computers in a network ?

Posted: Thu Sep 18, 2014 2:00 pm
by FranciscoA
Look at this sample's code. Maybe some help.

Code: Select all

//--------------------------//
Function GetIPs(cEquipo)
local cIP

DEFAULT cEquipo := "LOCAL"

   WsaStartUp() 

 if upper(cEquipo) == "LOCAL"
   cIP := GetHostByName( GetHostName() )   //IP equipo local
 elseif upper(cEquipo) == "SERVIDOR"
   cIP := GetHostByName(cNombServ)    //IP equipo en red segun nombre dado
 endif

   //GetHostByAddress("192.168.0.14")    // NOMBRE del equipo en RED segun IP dada
   //NetName(.f.)    // NOMBRE del equipo en RED
   //NetName(.t.)    // NOMBRE del usuario del equipo en RED

   WsaCleanUp() 

Return cIP
 

Re: How do i get list of IP Address of computers in a network ?

Posted: Thu Sep 18, 2014 4:01 pm
by Rick Lipkin
Francisco

I have enjoyed looking at your Ldap queries .. Hopefully soon, I will be changing jobs, and I would like to be able to query 'Active Directory' for many of the attributes you have shown in your examples.

I would be most grateful, if you would not mind sharing ( or I would be willing to pay ) for your library of LDAP code.

Let me know...

Thanks
Rick Lipkin

Re: How do i get list of IP Address of computers in a network ?

Posted: Thu Sep 18, 2014 4:55 pm
by FranciscoA
Rick.
I took the information, from here:

http://www.activexperts.com/network-mon ... ection.htm

I hope you find it useful.

Sample:

Code: Select all

//--------------------------------------//
Function FapSoftScan(oVent)
local oDlg, oBrw, oCbx, oBt1,oBt2
local nWidthRes := GetSysMetrics(SM_CXSCREEN)  
local nHeightRes := GetSysMetrics(SM_CYSCREEN)
local aInfo:={}, aTitCols:={}, aWMIscan, bMonitoring, bEndProcess, bBt1
local cVar, nPos:=1, n
local aOptions := {"01  Grupo de Programas      (Win32 Logical Program Group)  ",;
                   "02  Sistema del Ordenador   (Win32 Computer Systen)        ",;
                   "03  Recursos Compartidos    (Win32 Share)                  ",;
                   "04  Servicios               (Win32 Service)                ",;
                   "05  Cliente de Red          (Win32 Network Client)         ",;
                   "06  Conexiones              (Win32 Network Connection)     ",;
                   "07  Perfil de Red           (Win32 Network Login Profile)  ",;
                   "08  Procesos                (Win32 Process)                ",;
                   "09  Discos                  (Win32 Logical Disks)          ",;
                   "10  Impresoras              (Win32 Printer)                " }

local oLoc, oWMI

TRY
   oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
CATCH 
   MsgStop("No se pudo crear objeto 'wbemScripting.SwbemLocator'","Alto")
   Quit
END

TRY
   oWMI := oLoc:ConnectServer()
CATCH 
   MsgStop("No se pudo conectar a WMI","Alto")
   Quit
END

bMonitoring := {|| aWMIscan:=FapMonitoring(nPos,oWMI,18) ,;
                   aInfo:=aWMIscan[1], aTitCols:=aWMIscan[2],;
                   oBrw:SetArray(aInfo,.t.,1,.t.),;
                   oBrw:cHeaders := aTitCols, ;
                   oBrw:nHeadStrAligns := AL_CENTER, ;   //    oBrw:nWidths := 160 ,;
                   AEval(oBrw:aCols,{|o,n,oCol|  if(ValType(o:Value) =="N", o:nWidth := Max( 40, oBrw:aCols[n]:HeaderWidth() ), o:nWidth:=160) }),;
                   oBrw:nColSel := 1, oBrw:Refresh(.t.),;
                   oBrw:SetFocus(), CelRowTooltip(oBrw) }


bBt1 := {|| if(nPos == 8,oBt1:Show(),oBt1:Hide()) }

bEndProcess := {|cProc, nRec, nHnd| nRec:=oBrw:nArrayAt,;
                 if( nPos == 8,;
                   ( cProc := oBrw:aArrayData[oBrw:nArrayAt,oBrw:Name:nPos],;
                     nHnd  := oBrw:aArrayData[oBrw:nArrayAt,oBrw:ProcessID:nPos],;
                     FapEndProc(cProc,oWMI,nHnd),;
                     Eval(bMonitoring),;
                     oBrw:nArrayAt:=nRec-1,oBrw:Refresh(), oBrw:SetFocus() ),) }


DEFINE DIALOG oDlg SIZE oVent:nWidth, oVent:nHeight TITLE "FapSoftScan" TRANSPARENT

cVar := aOptions[1]

@ oDlg:nTop+10,8 COMBOBOX oCBx VAR cVar OF oDlg PIXEL;
                 ITEMS aOptions ;
                 SIZE 140,16 ;
                 ON CHANGE ( nPos := oCbx:nAt(), Eval(bMonitoring), Eval(bBt1) )

@1,1 XBROWSE oBrw OF oDlg ; 
     ARRAY {} CELL LINES FOOTERS AUTOSORT

     FapBrwSetup(oBrw)

     oBrw:CreateFromCode()

     Eval(bMonitoring)


 @ oDlg:nTop+245,8 BUTTONBMP oBt1 PROMPT "Finalizar Proceso" OF oDlg ;
                    SIZE 60, 12  PIXEL ;
                    BITMAP "BORRAR16x16" TEXTRIGHT ;
                    ACTION EVal(bEndProcess)

 @ oDlg:nTop+245,380 BUTTONBMP oBt2 PROMPT "Salir/Cancelar" OF oDlg ;
                    SIZE 60, 12  PIXEL ;
                    BITMAP "SALIR16x16" TEXTRIGHT ;
                    ACTION oDlg:End()
 
 ACTIVATE DIALOG oDlg CENTERED ;
   ON INIT ( oBrw:nHeight:=oDlg:nHeight-118, oBrw:nWidth:=oDlg:nWidth-34, oBrw:nTop:=oDlg:nTop+50 ,;
             oBt1:Hide(), oBrw:SetFocus() )

Return nil


//------------------------
Function FapBrwSetup(oBrw)
local nFONDO1 := RGB(215, 215, 215)
local nFONDO2 := RGB(235, 235, 235)
local nAZUL   := RGB( 0, 0, 128)

   WITH OBJECT oBrw
      :l2007            := .f.
      :nRecSelColor     :=  nFONDO1
      :nStyle           := nAnd( :nStyle, nNot( WS_BORDER ) )
      :nMarqueeStyle    := MARQSTYLE_HIGHLROW   //ilumina toda la linea
      :bClrHeader       := {|| { nAZUL, nFONDO1, } } 
      :bClrFooter       := :bClrHeader         // Colores texto de footers
      :bClrStd          := {|| IF( oBrw:nArrayAt() % 2 == 0, {nAZUL, nFONDO1}, {nAZUL, nFONDO2} ) }  
      :bClrSel          := {|| { nAZUL, CLR_WHITE } }  // para barra de linea selecc cuando el control no tiene el foco
      :bClrSelFocus     := { || { CLR_WHITE, nAZUL } }     // para barra de linea selecc cuando el control tiene el foco
      :lKinetic         := .f.
      :lContrastClr     := .f.  //para que no cambie color de texto automaticamente segun intensidad del fondo
      :nRowHeight       := 20 
      :nHeaderHeight    := 34
      :nColDividerStyle := LINESTYLE_LIGHTGRAY
      :nRowDividerStyle := LINESTYLE_LIGHTGRAY
   END

Return nil


//-------------------------------------------------------------
Function FapMonitoring(nOption,oWMI)
local oPC, oQry
local aInfo:={}, aTitCols, n,nLen

if nOption == 1
   oQry := oWMI:ExecQuery( "Select * FROM Win32_LogicalProgramGroup" )
   aTitCols:= {"Caption","Description","GroupName","Name","UserName","InstallDate","Status"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Description, oPC:GroupName, oPC:Name, oPc:UserName, oPc:InstallDate, oPc:Status} )
   next

elseif nOption == 2
   oQry := oWMI:ExecQuery( "Select * FROM Win32_ComputerSystem" )
   aTitCols:= {"Caption","Description","Domain","Model","Name","Processors","Status","System Type","User Name"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Description, oPC:Domain, oPC:Model, oPC:Name, oPc:NumberOfProcessors, oPc:Status, oPC:SystemType, oPC:UserName} )
   next   

elseif nOption == 3
   oQry := oWMI:ExecQuery( "Select * FROM Win32_Share" )
   aTitCols:= {"Caption","Description","Name","Path","Status","Type"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Description, oPC:Name, oPc:Path, oPc:Status, oPC:Type} )
   next   

elseif nOption == 4
   oQry := oWMI:ExecQuery( "Select * FROM Win32_Service" )
   aTitCols:= {"Caption","Description","DisplayName","Name","PathName","State","Status","SystemName"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Description, oPC:DisplayName, oPc:Name, oPC:PathName, oPc:State, oPc:Status, oPC:SystemName} )
   next
   
elseif nOption == 5
   oQry := oWMI:ExecQuery( "Select * FROM Win32_NetworkClient" )
   aTitCols:= {"Caption","Description","Name","Status","Manufacturer"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Description, oPC:Name, oPC:Status, oPC:Manufacturer} )
   next

elseif nOption == 6
   oQry := oWMI:ExecQuery( "Select * FROM Win32_NetworkConnection" )
   aTitCols:= {"Caption","Comment","Description","LocalName","Name","Persistent","RemoteName","RemotePath","Status","UserName","ConnectionState","ConnectionType"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Comment, oPC:Description, oPC:LocalName, oPC:Name, oPC:Persistent, oPc:RemoteName, oPc:RemotePath, oPC:Status, oPc:UserName, oPC:ConnectionState, oPC:ConnectionType} )
   next

elseif nOption == 7
   oQry := oWMI:ExecQuery( "Select * FROM Win32_NetworkLoginProfile" )
   aTitCols:= {"Caption","Comment","Description","FullName","HomeDirectory","HomeDirectoryDrive","Name","PasswordAge","Profile","ScriptPath","UserId","UserType","Workstations"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Comment, oPC:Description, oPC:FullName, oPC:HomeDirectory, oPC:HomeDirectoryDrive, oPc:Name, oPC:PasswordAge, oPc:Profile, oPc:ScriptPath, oPC:UserId, oPc:UserType, oPC:Workstations} )
   next

elseif nOption == 8
   oQry := oWMI:ExecQuery( "Select * FROM Win32_Process" )
   aTitCols:= {"Caption","Description","ExecutablePath","ExecutionState","Handle","HandleCount","Name","ProcessId","SessionId","Status"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Description, oPC:ExecutablePath, oPC:ExecutionState, oPC:Handle, oPC:HandleCount, oPc:Name, oPC:ProcessId, oPc:SessionId, oPc:Status} )
   next

elseif nOption == 9 
   oQry := oWMI:ExecQuery( "Select * FROM Win32_LogicalDisk" )
   aTitCols:= {"Caption","Description","DeviceID","DriveType","FileSystem","FreeSpace","InstallDate","MediaType","Name","Size","Status","SystemName","VolumeName","VolumeSerialNumber","ProviderName"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Caption, oPC:Description, oPC:DeviceID, oPC:DriveType, oPC:FileSystem, oPC:FreeSpace, oPc:InstallDate, oPC:MediaType, oPc:Name, oPc:Size, oPC:Status, oPC:SystemName, oPC:VolumeName, oPC:VolumeSerialNumber, oPC:ProviderName} )
   next

elseif nOption == 10
   oQry := oWMI:ExecQuery( "Select * FROM Win32_Printer" )
   aTitCols:= {"Name","DeviceID","ShareName","SystemName","PrinterState","PrinterStatus","Status"}
   for each oPC in oQry
      aadd(aInfo, {oPC:Name, oPC:DeviceID, oPC:ShareName, oPC:SystemName, oPc:PrinterState, oPc:PrinterStatus,oPC:Status} )
   next
endif

   //Agregar columna para numerar consecutivo
   Aadd(aTitCols,nil)
   AIns(aTitCols,1)
   aTitCols[1]:="No. "
   For n := 1 to len(aInfo)
      Aadd(aInfo[n],nil)
      AIns(aInfo[n],1)
      aInfo[n,1] := n
   Next

RETURN {aInfo,aTitCols}

//-----------------------------------//
FUNCTION FapEndProc(cProceso,oWMI,nHnd)
Local oQry, oProc

If MsgNoYes("Proceso: "+cProceso+CRLF+;
            "Esta seguro(a) de finalizar este proceso?","Finalizar Proceso")
   
   oQry := oWMI:ExecQuery( "SELECT * FROM Win32_Process WHERE Name = '"+cProceso+"'" )

   FOR EACH oProc IN oQry
      If UPPER(oProc:Name) == UPPER(cProceso) .and. oProc:ProcessID == nHnd
         oProc:Terminate()
      Endif
   NEXT

Endif
RETURN nil
 
Best regards.

Re: How do i get list of IP Address of computers in a network ?

Posted: Thu Sep 18, 2014 4:59 pm
by FranciscoA

Re: How do i get list of IP Address of computers in a network ?

Posted: Thu Sep 18, 2014 5:05 pm
by FranciscoA
Sorry, I forgot this function.

Code: Select all

//-------------------------//Ver contenido de celda-linea seleccionada en un tooltip
Function CelRowTooltip(oBrw)
local n     //Muestra contenido de la celda-linea seleccionada en un tooltip
     For n := 1 to len(oBrw:aCols)
        oBrw:aCols[n]:bToolTip := {|oBrw,nRow,nCol,nKeyFlas| ;
        IF(oBrw:MouseRowPos(nRow)==oBrw:nRowSel ,;
        if(!empty(oBrw:aCols[oBrw:MouseColPos(nCol)]:bStrData),;
        oBrw:aCols[oBrw:MouseColPos(nCol)]:bStrData,nil),) }
     Next
Return nil
 

Re: How do i get list of IP Address of computers in a network ?

Posted: Thu Sep 18, 2014 6:07 pm
by Rick Lipkin
Francisco

Thank you for your examples .. I did bookmark the link .. 'good stuff' 8) I appreciate your generosity!

Rick Lipkin

Re: How do i get list of IP Address of computers in a network ?

Posted: Fri Sep 19, 2014 1:24 am
by FranciscoA
Rick.
Thank you for your words.