24 de febrero de 2012

Obtener Propiedades/Atributos extendidos de archivos

Muy buen código del turco Cetin Basoz para ver las propiedades extendidas de diferentes tipos de archivos.
Clear
lcFile = GETFILE("MP3") && Ejemplo con archivos MP3
loShell = Createobject("Shell.Application")
loFolder = loShell.Namespace(JUSTPATH(m.lcFile))
loItem = loFolder.ParseName(JUSTFNAME(m.lcFile))
If !Isnull(loItem)
  IF loItem.IsLink
    objLink = loItem.GetLink()
    ? "Link properties of shortcut:"
    ? "-------------------------------------"
    ? "Description:", objLink.Description
    ? "Path:", objLink.Path
    ? "Arguments:", objLink.Arguments
    ? "WorkingDirectory:", objLink.WorkingDirectory
    ? "-------------------------------------"
  else
    For ix= 0 To 34 && version based. win 7: 0 to 266. Property order differs too.
      ? "Column "+Str(m.ix,2)+": "+ ;
        loFolder.GetDetailsOf(loItem, m.ix)
    Endfor
  endif
Else
  ? "File doesn't exist"
Endif
Return
Para ver la información de las columnas:
http://technet.microsoft.com/en-us/library/ee176615.aspx

Para ver la información de las columnas (para mas versiones de Windows):
http://www.kixtart.org/forums/ubbthreads.php?ubb=showflat&Number=160880&page=1

15 de febrero de 2012

Como quemar Discos Ópticos desde VFP

Estuve buscando la forma de quemar un Disco Óptico (CD o DVD) desde VFP y no encontré nada "elegante". Por esta razón tuve que buscar una solución mediante el uso de un programa externo que hiciera este trabajo.

La solución fue descargar el programa Command Burner.

Command Burner lo descargué del sitio www.commandburner.com. Claramente dice en los "Términos de Uso" que el programa se puede usar y distribuir libremente.

El programa solamente requiere que los siguientes 3 archivos estén incluídos en su aplicación:
  • CMDBurn.CHM
  • CMDBurn.EXE
  • MCDB.OCX
La forma en que lo invoqué desde VFP fue la siguiente
   #DEFINE SW_SHOW_INVISIBLE 0
   oShell = createobject("WScript.Shell")
   oShell.Run("CMDBURN.EXE burn /d d:\sistema /l BACKUP /eject /hide", SW_SHOW_INVISIBLE, .T. )
   #UNDEF SW_SHOW_INVISIBLE
   RELEASE oShell
La constante #DEFINE SW_SHOW_INVISIBLE 0 la utilicé para que no se abrá una ventana mostrando la ejecución del programa. De todos modos, el programa incluye el parámetro /hide para ocultar la interface propia del Command Burner.

La línea de comando es esta:
  CMDBURN.EXE burn /d d:\sistema /l BACKUP /eject /hide 

Parámetros:
  • /d d:\sistema - Quiero quemar el directorio (o carpeta) d:\sistema y TODO su contenido
  • /l BACKUP - La etiqueta del Disco a quemar será la palabra BACKUP
  • /eject - Expulsar el disco al terminar de quemar
  • /hide - Ocultar la interface del programa CommandBurner. Si no se incluye este parámetro, se verá una interface mostrando el progreso de "quemado" del disco.
Espero que le sea de utilidad a alguien.

Edgar Acevedo