FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Requerimiento de funcion: Equipos del grupo de trabajo
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Requerimiento de funcion: Equipos del grupo de trabajo
Posted: Wed Aug 21, 2013 01: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
Posts: 68
Joined: Tue Apr 14, 2009 09:26 PM
Re: Requerimiento de funcion: Equipos del grupo de trabajo
Posted: Wed Aug 21, 2013 02:38 PM
hola , segue mi function que mostra as unidades , acho que lhe servirá.

Saludos

William



Code (fw): Select all Collapse
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
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Requerimiento de funcion: Equipos del grupo de trabajo
Posted: Wed Aug 21, 2013 07:51 PM
Willian:

Gracias por responder.

Lo implemente asi:
Code (fw): Select all Collapse
//----------------------------------------------------------------------------//

#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.

Continue the discussion