Requerimiento de funcion: Equipos del grupo de trabajo

Requerimiento de funcion: Equipos del grupo de trabajo

Postby RSalazarU » Wed Aug 21, 2013 1:25 pm

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/viewtopic.php?f=6&t=26997

De antemano, muchas gracias.

Atentamente,

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

Re: Requerimiento de funcion: Equipos del grupo de trabajo

Postby WilliamAdami » Wed Aug 21, 2013 2:38 pm

hola , segue mi function que mostra as unidades , acho que lhe servirá.

Saludos

William



Code: Select all  Expand view


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




WilliamAdami
 
Posts: 68
Joined: Tue Apr 14, 2009 9:26 pm
Location: Brasil

Re: Requerimiento de funcion: Equipos del grupo de trabajo

Postby RSalazarU » Wed Aug 21, 2013 7:51 pm

Willian:

Gracias por responder.

Lo implemente asi:
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()
      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

 


Esto quedara asi por el momento, no quisiera usar WAITRUN(..).

Ahora lo usare en la funcion cFWGetDir()

Atentamente,

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: No registered users and 95 guests