Ver equipos en la red

Ver equipos en la red

Postby Jorge Jaurena » Thu Nov 30, 2017 3:23 pm

Buen dia.

Mi consulta se debe a que necesito saber cuales son los equipos que integran la red local y poder ver sus recursos compartidos, estoy usando lo siguiente:
Vec:=HNetView()
pero Vec siempre esta vacio.

Muchas gracias
Jorge Jaurena
Jorge Jaurena
 
Posts: 146
Joined: Fri Oct 21, 2005 6:35 pm

Re: Ver equipos en la red

Postby karinha » Thu Nov 30, 2017 4:40 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7153
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Ver equipos en la red

Postby RSalazarU » Fri Dec 01, 2017 10:07 pm

Jorge:

Creo que estos es lo que estas buscando:
Code: Select all  Expand view

//----------------------------------------------------------------------------//

#define LEN_LINE    128
#define LEN_NETNAME  23

//aNetName_CMD: Retorna un arreglo bidimencional {cNombre,cDescripcion}
function aNetName_CMD()
local i,cFile,cTxt,cLine,nLines
local aPCs := {}

   if Network()
      //cFile := cTempFile()
      //cFile := Tmp("Cmd_",".TXT")
      //WAITRUN("COMMAND.COM /C net view > "+cFile ,0)
      cFile := RunCMD("net view",.T.)
      if file(cFile)
         cTxt := MemoRead( cFile )
         nLines := MLCount( cTxt, LEN_LINE)//, nTabSize, lWrap )
         FOR i:=1 TO nLines
            cLine := MemoLine( cTxt, LEN_LINE, i)//, nTabSize, lWrap )
            if left(cLine,2)=="\\"
               AADD(aPCs,{LEFT(cLine,AT(" ",cLine)-1),ALLTRIM(RIGHT(cLine,LEN(cLine)-AT(" ",cLine) ))})//,LEN_NETNAME))
            endif
         NEXT
         FERASE(cFile)
      endif
   endif

Return aPCs

//----------------------------------------------------------------------------//

#define LEN_NOMBRE_DE_RECURSO_COMPARTIDO  30
#define LEN_TIPO_DE_RECURSO_COMPARTIDO     4

function aNetRecursos_CMD(cEstacion)
local i,cFile,cTxt,cLine,nLines
local aRecursos := {}

   if !EMPTY(cEstacion)
      //cFile := cTempFile()
      //cFile := Tmp("Cmd_",".TXT")
      //WAITRUN("COMMAND.COM /C net view "+cEstacion+" > "+cFile ,0)
      cFile := RunCMD("net view "+cEstacion,.T.)
      if file(cFile)
         cTxt := MemoRead( cFile )
         nLines := MLCount( cTxt, LEN_LINE )//, nTabSize, lWrap )
         FOR i:=1 TO nLines
            cLine := MemoLine( cTxt, LEN_LINE, i)//, nTabSize, lWrap )
            if UPPER(SubStr(cLine,LEN_NOMBRE_DE_RECURSO_COMPARTIDO+1,LEN_TIPO_DE_RECURSO_COMPARTIDO))=="DISC"
               AADD(aRecursos,RTRIM(LEFT(cLine,LEN_NOMBRE_DE_RECURSO_COMPARTIDO)))
            endif
         NEXT
         FERASE(cFile)
      endif
   endif

Return aRecursos
 


y esta es mi propia implementacion del comando RunCMD
Code: Select all  Expand view

//----------------------------------------------------------------------------//
//Funcion RunCMD
//----------------------------------------------------------------------------//
FUNCTION RunCMD(cCmd,lReturnFileResult)
local cTmpFile, hTmp

   default lReturnFileResult := .F.

   cTmpFile:=Tmp("RunCMD_",".BAT")

   hTmp := FCREATE(cTmpFile,0)
   FWRITE(hTmp, cCmd + if(lReturnFileResult," > " + LEFT(cTmpFile,AT(".",cTmpFile)-1) + ".txt", "") )
   FCLOSE(hTmp)
   WaitRun(cTmpFile,0)
   FErase( cTmpFile )

return if(lReturnFileResult, LEFT(cTmpFile,AT(".",cTmpFile)-1) + ".txt", NIL)
//FIN Funcion RunCMD ----------------------------------------------------------------------------//
 


NOTA:
- Esta basada en el resultado de un comando DOS.
- En el foro vi otras opciones con CreateObject ( "wbemScripting.SwbemLocator" ), pero no lo puede hacer funcionar.

Rolando
Cochabamba, Bolivia
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 5 guests