4 de julio de 2006

Utilizando la función ANETRESOURCES()

Podemos utilizar la función ANETRESOURCES() (disponible desde Visual FoxPro 6.0) para obtener en un vector, pasado como primer parámetro, todos los nombres de computadoras de un dominio o grupo de trabajo; o también los recursos compartidos e impresoras de red de una computadora específica.

En el segundo parámetro se debe especificar el nombre de dominio o grupo de trabajo (esto a partir de Visual FoxPro 7.0); o el nombre de la computadora con el formato \\NombreComputadora.

La función ANETRESOURCES() nos retornará cualquier recurso de red, solo los recursos compartidos, o solo las impresoras de red, según el valor del tercer parámetro, que puede ser 0, 1 ó 2 respectivamente.

El siguiente código de ejemplo nos mostrará un formulario similar al de la Figura 1. Este formulario carga en una lista los nombres de las computadoras del dominio o grupo de trabajo actual (o el que nosotros especifiquemos en el cuadro de texto), y a medida que recorremos esta lista, nos mostrará los recursos compartidos e impresoras de red de cada computadora.


Figura 1
PUBLIC goMiForm
goMiForm = NEWOBJECT("MiForm")
goMiForm.SHOW(1)
RETURN

DEFINE CLASS MiForm AS FORM
  HEIGHT = 260
  WIDTH = 530
  AUTOCENTER = .T.
  SHOWWINDOW = 2
  CAPTION = "Ejemplo de ANETRESOURCES()"
  ICON = HOME(1) + "\Graphics\Icons\Win95\NetHood.ico"
  NAME = "frmANet"
  ADD OBJECT lstcomputadoras AS LISTBOX WITH ;
    HEIGHT = 168, LEFT = 16, TOP = 72, WIDTH = 184, ;
    NAME = "lstComputadoras"
  ADD OBJECT lstrecursos AS LISTBOX WITH ;
    HEIGHT = 72, LEFT = 216, TOP = 72, WIDTH = 296, ;
    NAME = "lstRecursos"
  ADD OBJECT lstimpresoras AS LISTBOX WITH ;
    HEIGHT = 72, LEFT = 216, TOP = 168, WIDTH = 296, ;
    NAME = "lstImpresoras"
  ADD OBJECT txtdominio AS TEXTBOX WITH ;
    HEIGHT = 24, LEFT = 16, TOP = 24, WIDTH = 184, ;
    NAME = "txtDominio"
  ADD OBJECT lblTit1 AS LABEL WITH ;
    NAME = "lblTit1", AUTOSIZE = .T., FONTBOLD = .T., ;
    BACKSTYLE = 0,    CAPTION = "Dominio", ;
    HEIGHT = 17, LEFT = 16, TOP = 8, WIDTH = 48
  ADD OBJECT lblTit2 AS LABEL WITH ;
    NAME = "lblTit2", AUTOSIZE = .T., FONTBOLD = .T., ;
    BACKSTYLE = 0,    CAPTION = "Computadoras", ;
    HEIGHT = 17, LEFT = 16, TOP = 56, WIDTH = 86
  ADD OBJECT lblTit3 AS LABEL WITH ;
    NAME = "lblTit3", AUTOSIZE = .T., FONTBOLD = .T., ;
    BACKSTYLE = 0, CAPTION = "Recursos compartidos", ;
    HEIGHT = 17, LEFT = 216, TOP = 56, WIDTH = 132
  ADD OBJECT lblTit4 AS LABEL WITH ;
    NAME = "lblTit4", AUTOSIZE = .T.,  FONTBOLD = .T., ;
    BACKSTYLE = 0, CAPTION = "Impresoras compartidas", ;
    HEIGHT = 17, LEFT = 216, TOP = 152, WIDTH = 143
  ADD OBJECT cmdCargarDominio AS COMMANDBUTTON WITH ;
    TOP = 24, LEFT = 216, HEIGHT = 24, WIDTH = 136, ;
    CAPTION = "Cargar dominio", NAME = "cmdCargarDominio"
  *--
  PROCEDURE CargarRecursos
    LPARAMETERS tcComputadora
    LOCAL ln
    *-- Lista de recursos compartidos
    WITH THISFORM.lstRecursos
      .CLEAR
      FOR ln = 1 TO ANETRESOURCES(la,tcComputadora,1)
        .ADDITEM("\" + la(ln),ln,1)
      ENDFOR
      .PICTURE = HOME(1) + ;
        "\Graphics\Bitmaps\Outline\Nomask\OpenFold.bmp"
    ENDWITH
    *-- Lista de impresoras de red
    WITH THISFORM.lstImpresoras
      .CLEAR
      FOR ln = 1 TO ANETRESOURCES(la,tcComputadora,2)
        .ADDITEM("\" + la(ln),ln,1)
      ENDFOR
      .PICTURE = HOME(1) + ;
        "\Graphics\Bitmaps\Outline\Nomask\PrintFld.bmp"
    ENDWITH
  ENDPROC
  *--
  PROCEDURE CargarComputadoras
    LPARAMETERS tcDominio
    LOCAL ln
    *-- Lista de computadoras del dominio o grupo de trabajo
    WITH THISFORM.lstComputadoras
      .CLEAR
      FOR ln = 1 TO ANETRESOURCES(la,tcDominio,0)
        .ADDITEM("\" + la(ln),ln,1)
      ENDFOR
      .PICTURE = HOME(1) + ;
        "\Graphics\Bitmaps\Outline\Nomask\MyComp.bmp"
      .LISTINDEX = 1
    ENDWITH
  ENDPROC
  *--
  PROCEDURE INIT
    LOCAL lcDominio, lcComputadora
    *-- Toma el dominio actual
    lcDominio = GETENV("USERDOMAIN")
    THISFORM.txtDominio.VALUE = lcDominio
    THISFORM.CargarComputadoras(lcDominio)
    lcComputadora = THISFORM.lstComputadoras.VALUE
    THISFORM.CargarRecursos(lcComputadora)
  ENDPROC
  *--
  PROCEDURE lstComputadoras.INTERACTIVECHANGE
    LOCAL lcComputadora
    WAIT WINDOW NOWAIT "Trabajando ..."
    lcComputadora = THIS.VALUE
    THISFORM.CargarRecursos(lcComputadora)
    WAIT CLEAR
  ENDPROC
  *--
  PROCEDURE cmdCargarDominio.CLICK
    LOCAL lcDominio
    WAIT WINDOW NOWAIT "Trabajando ..."
    lcDominio = ALLTRIM(THISFORM.txtDominio.VALUE)
    THISFORM.CargarComputadoras(lcDominio)
    lcComputadora = THISFORM.lstComputadoras.VALUE
    THISFORM.CargarRecursos(lcComputadora)
    WAIT CLEAR
  ENDPROC
ENDDEFINE

Para mas detalles de la función ANETRESOURCES() mire el archivo de ayuda de Visual FoxPro.

1 comentario :

  1. Demasiado bueno.. Siempre reviso esta página, y no se porque no se me ocurre agradecer, pero estoy muy agradecido siempre. Mil gracias y mil bendiciones...

    ResponderEliminar