***************************
#Include "FiveWin.ch"
* teste da fun‡Æo para mostrar
* os dispositivos da rede
function main
local gg
gg:=listarede()
if gg[1]
msgalert(oemtoansi("Esta‡Æo: ")+gg[2]+CRLF+"Nome: "+gg[3]+CRLF+"Tipo: "+gg[4] )
else
msgalert(oemtoansi("Nenhum dispositivo selecionado !"))
endif
return nil
**************************************************
* Nome...: ListaRede()
* Fun‡ao.: Listar os dispositivos do grupo
* de trabalho da rede
* Retorno: array[4] .T. ou .F. (selecionou ou nÆo)
* Nome da esta‡Æo
* Nome do dispositivo
* Tipo (disco ou impressora)
* Adaptado por William Adami em 13/11/2014
**************************************************
Function ListaRede
Local ncodigo,cestacao,nquantas,ocoment,odlg2
local vol:={.f.,"","",""},obrw,area:=select(),vldbf,cComando,ob[2]
nquantas :=0
* cria arquivo dbf temporario na memoria
vldbf:= {}
AAdd(vldbf, {"quantas", "n", 4, 0 })
AAdd(vldbf, {"nome_imp", "c", 14, 0})
AAdd(vldbf, {"estacao", "c", 23, 0})
AAdd(vldbf, {"comentario", "c", 30, 0})
select 77
Hb_DbCreateTemp("CARIMP", vldbf)
cComando = "net view > estacao.txt"
myrun(cComando)
* cria arquivo dbf temporario na memoria
vldbf:= {}
AAdd(vldbf, {"texto", "c", 100, 0})
select 78
Hb_DbCreateTemp("CARTES", vldbf)
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")
cComando = "net view "+cestacao+" > estacao1.txt"
myrun(cComando)
* cria arquivo dbf temporario na memoria
vldbf:= {}
AAdd(vldbf, {"texto", "c", 100, 0})
select 79
Hb_DbCreateTemp("CARTIM", vldbf)
APPEND FROM estacao1.txt SDF
dbselectarea("CARTIM")
dbgotop()
Do while !eof()
if substr(CARTIM->texto,27,4)#'Disc'.AND.substr(CARTIM->texto,27,4)#'Impr'
dbskip(1)
loop
else
if substr(CARTIM->texto,27,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')
CARTIM->(DBCLOSEAREA())
dbdrop("MEM:CARTIM")
dbselectarea('CARTES')
dbskip(1)
Enddo
dbselectarea('CARTES')
CARTES->(DBCLOSEAREA())
dbdrop("MEM:CARTES")
if file('ESTACAO.TXT')
ferase('ESTACAO.TXT')
endif
if file ('ESTACAO1.TXT')
ferase('ESTACAO1.TXT')
endif
dbselectarea('CARIMP')
go top
DEFINE DIALOG oDlg2 FROM 5, 2 TO 30, 55 TITLE "LISTA DE DISPOSITIVOS DA REDE"
odlg2:lhelpicon:=.f.
@ 1 , 0.8 LISTBOX obrw VAR cItem ;
FIELDS carimp->NOME_IMP, ;
carimp->ESTACAO, ;
carimp->COMENTARIO ;
HEADERS OemToAnsi( "NOME" ), ;
OemToAnsi( "ESTACAO" ), ;
OemToAnsi( "Tipo" ) ;
OF odlg2 SIZE 200, 140 ;
COLOR CLR_WHITE, CLR_GREEN ;
ON DBLCLICK (vol:={ .t.,rtrim(carimp->estacao), rtrim(carimp->nome_imp),rtrim(carimp->comentario) },odlg2:end())
obrw:bKeyChar := {|nK| if( nK==VK_RETURN,(vol:={ .t., rtrim(carimp->estacao), rtrim(carimp->nome_imp),rtrim(carimp->comentario) },odlg2:end()) ,NIL)}
@ 9, 8 BUTTON ob[1] PROMPT "&Ok" OF oDlg2 SIZE 40, 12 ACTION (vol:={ .t.,rtrim(carimp->estacao), rtrim(carimp->nome_imp),rtrim(carimp->comentario) },odlg2:end())
@ 9, 18 BUTTON ob[2] PROMPT "&Sair" OF oDlg2 SIZE 40, 12 ;
ACTION (oDlg2:End() )
activate dialog odlg2 centered
CARIMP->(DBCLOSEAREA())
dbdrop("MEM:CARIMP")
select(area)
Return vol
FUNCTION myRUN( cComando, nStyle, lWait, lShowResult )
local oShell, RET
IF valtype( nStyle ) != "N"
nStyle := 0
ENDIF
IF ValType( lWait ) != "L"
lWait := .T.
ENDIF
IF ValType( lShowResult ) != "L"
lShowResult := .F.
ENDIF
oShell := CreateObject( "WScript.Shell" )
IF !GetEnv( "OS" ) == "Windows_NT"
cComando += "start " + cComando
ENDIF
TRY
RET := oShell:Run( "%comspec% /c " + cComando, nStyle, lWait )
CATCH
msgstop("ERRO NO ENVIO DO COMANDO !","ERRO")
END
IF lShowResult .AND. RET > 0 .and. RET <= 32
msginfo( "Erro Win_Run(): " + ltrim( Str( RET ) ), " OK " )
ENDIF
oShell := NIL
Return IF( RET = 0, .T., .F. )