Jorge:
Creo que estos es lo que estas buscando:
Code: Select all
//----------------------------------------------------------------------------//
#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
//----------------------------------------------------------------------------//
//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