Amigos del foro:
Necesito una funcion que me que me devuelva los "equipos del grupo de trabajo" y los recursos compartidos que tienen
aNetName() -> {"Server","Term1","Term2"}
aNetRecursos("Server") -> {"Compartido","Datos"}
Si alguien lo ha desarrollado me podria dar una mano, por favor...
Lo necesito para mejorar la funcion cFWGetDir()
http://forums.fivetechsupport.com/viewt ... =6&t=26997
De antemano, muchas gracias.
Atentamente,
Rolando
Cochabamba, Bolivia
Requerimiento de funcion: Equipos del grupo de trabajo
-
- Posts: 65
- Joined: Tue Apr 14, 2009 9:26 pm
- Location: Brasil
Re: Requerimiento de funcion: Equipos del grupo de trabajo
hola , segue mi function que mostra as unidades , acho que lhe servirá.
Saludos
William
Saludos
William
Code: Select all
Function qualcamired
Local oDlg101,oWnd,ncodigo,cestacao,nquantas,ocoment,odlg2
local volta:="",obrw,area:=select()
nquantas :=0
ferase("carimp.dbf")
DbCreate( "CARIMP", { { "QUANTAS" , "N", 04, 0 },;
{ "NOME_IMP" , "C", 14, 0 },;
{ "ESTACAO" , "C", 23, 0 },;
{ "COMENTARIO", "C", 30, 0 } } )
if OpenFile( "carimp","carimp", 1, .F. )
endif
WAITRUN("COMMAND.COM /C net view > estacao.txt" ,0 )
DbCreate( "CARTES", { { "TEXTO", "C", 100, 0 } } )
if OpenFile( "cartes","cartes", 1, .F. )
endif
APPEND FROM estacao.txt SDF
dbselectarea("CARTES")
dbgotop()
Do while !eof()
if substr(CARTES->texto,1,2)#'\\'
dbskip(1)
loop
endif
dbselectarea('CARIMP')
cestacao :=substr(CARTES->texto,1,23)
ferase("ESTACAO.TXT")
WAITRUN("COMMAND.COM /C net view "+cestacao+" > estacao1.txt",0 )
DbCreate( "CARTIM", { { "TEXTO", "C", 100, 0 } } )
if OpenFile( "cartim","cartim", 2, .F. )
endif
APPEND FROM estacao1.txt SDF
dbselectarea("CARTIM")
dbgotop()
Do while !eof()
if substr(CARTIM->texto,14,4)#'Disc'.AND.substr(CARTIM->texto,14,4)#'Impr'
dbskip(1)
loop
else
if substr(CARTIM->texto,14,4)<>'Disc'
ocoment:="Impressora"
else
ocoment:="Disco"
endif
endif
dbselectarea('CARIMP')
append blank
nquantas++
replace CARIMP->quantas with nquantas
replace CARIMP->estacao with substr(CARTES->texto,1,23)
replace CARIMP->nome_imp with '\'+substr(CARTIM->texto,1,13)
replace CARIMP->comentario with ocoment
dbselectarea('CARTIM')
dbskip(1)
Enddo
dbselectarea('CARTIM')
dbclosearea('CARTIM')
ferase('CARTIM.DBF')
dbselectarea('CARTES')
dbskip(1)
Enddo
dbselectarea('CARTES')
dbclosearea('CARTES')
ferase('CARTES.DBF')
ferase('ESTACAO.TXT')
ferase('ESTACAO1.TXT')
dbselectarea('CARIMP')
go top
DEFINE DIALOG oDlg2 RESOURCE "REDE" TITLE "COMPONENTES DA REDE"
odlg2:lhelpicon:=.f.
REDEFINE LISTBOX obrw FIELDS carimp->NOME_IMP, ;
carimp->ESTACAO, ;
carimp->COMENTARIO ;
HEADERS OemToAnsi( "NOME" ), ;
OemToAnsi( "ESTACAO" ), ;
OemToAnsi( "DESCRICAO" ) ;
COLOR CLR_BLACK, rgb(238,221,130) ;
ID 101 ;
OF oDlg2 ;
ON DBLCLICK (volta:=rtrim(carimp->estacao)+rtrim(carimp->nome_imp),odlg2:end())
obrw:bKeyChar := {|nK| if( nK==VK_RETURN, (volta:=rtrim(carimp->estacao)+rtrim(carimp->nome_imp),odlg2:end()) ,NIL)}
activate dialog odlg2 centered
dbclosearea("carimp")
select(area)
Return volta
Re: Requerimiento de funcion: Equipos del grupo de trabajo
Willian:
Gracias por responder.
Lo implemente asi:
Esto quedara asi por el momento, no quisiera usar WAITRUN(..).
Ahora lo usare en la funcion cFWGetDir()
Atentamente,
Rolando
Cochabamba, Bolivia.
Gracias por responder.
Lo implemente asi:
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()
WAITRUN("COMMAND.COM /C net view > "+cFile ,0)
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()
WAITRUN("COMMAND.COM /C net view "+cEstacion+" > "+cFile ,0)
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
Ahora lo usare en la funcion cFWGetDir()
Atentamente,
Rolando
Cochabamba, Bolivia.