Selecciona todo y copialo en un PRG y despues analizalo (es solo para verlo mejor)
&& Creas una tabla con los nombre de usuario (equipos en la red) o los cargas en una
&& matriz fija como en el ejemplo.
&& Tambien crea un directorio en C:conecciones
DIMENSION usuarios(5)
usuarios[1]="marioa"
usuarios[2]="pc7"
usuarios[3]="pc5"
usuarios[4]="pc6"
usuarios[5]="carmen"
v_usuarios=""
FOR i =1 TO ALEN(usuarios)
v_ping = "ping "+LOWER(usuarios[i])+" > c:coneccionesping"+LOWER(usuarios[i])+".txt"
=prg_comando(v_ping,"")
do while !file("c:coneccionesping"+lower(usuarios[i])+".txt") && espera a que se cree el archivo
enddo
x=0
do while x<1
x=fopen("c:coneccionesping"+lower(usuarios[i])+".txt",1) && intenta abrir archivo para saber cuando finaliza
if !file("c:coneccionesping"+lower(usuarios[i])+".txt")
x=0
exit
endif
enddo
if x=0
else
do while !fclose(x)
enddo
v_nomred = filetostr("c:coneccionesping"+lower(usuarios[i])+".txt")
if "RESPUESTA"$upper(v_nomred)
v_usuarios = v_usuarios + usuarios[i] + chr(13)
endif
v_erase = "erase c:coneccionesping"+lower(usuarios[i])+".txt"
&v_erase
endif
endfor
v_erase = "erase c:conecciones emp_*.bat"
&v_erase
if !empty(allt(v_usuarios))
messagebox("Los siguientes equipos / usuarios pueden estar"+chr(13)+;
"usando algun archivo o no cerraron adecuadamente"+chr(13)+;
"el sistema."+chr(13)+chr(13)+;
v_usuarios+chr(13)+chr(13)+"Chequee y vuelva a intentar",16,"Servicios & Sistemas")
endif
*******************
FUNCTION prg_comando
* simulacion de RUN
parameter cComando,cDir
Declare Integer ShellExecute In shell32.Dll;
Integer hndWin, String cAction, String cFile,;
String cParams, String cDir, Integer nShow
if empty(cDir)
cArchivo = "c:conecciones emp" + Sys(2015) + ".bat"
=StrToFile(cComando, cArchivo)
=ShellExecute(0,"Open",cArchivo,"","",0)
else
=ShellExecute(0,"Open",cComando,"",cDir,0)
endif