martes, 11 de junio de 2019

Shellexecute con VFP

Shellexecute

La función ShellExecute() es realmente muy útil y por eso es muy importante conocerla bien para sacarle el máximo provecho posible.

Vamos a detallar algunos ejemplos con ShellExecute para que puedan notar el poder de esta función.

Debemos aclarar que Shellexecute() no es una función propia de Visual FoxPro sino que es una función de la API del Windows. ¿Qué es la API del Windows? Las siglas API son las iniciales de Application Programming Interface o sea la Interfaz para la Programación de Aplicaciones en el sistema operativo Windows. Está compuesta por muchísimas funciones que realizan muchísimas tareas de utilidad para los programadores.

¿Para qué sirve ShellExecute()?

El Shellexecute nos permite ejecutar cualquier programa que se encuentre en nuestro equipo ya bien sean extensiones de programas .exe,.com .bat, además de permitirnos ejecutar reportes en formatos pdf.

Como crear la sintaxis de ShellExecute()

DECLARE INTEGER ShellExecute IN shell32.dll ; 
  INTEGER hndWin, ; 
  STRING cAction, ; 
  STRING cFileName, ; 
  STRING cParams, ;  
  STRING cDir, ; 
  INTEGER nShowWin

La función ShellExecute() se encuentra en una DLL (Dynamic Link Library) llamada SHELL32.DLL. 
Devuelve un número entero. Si ese número es mayor que 32, entonces la función finalizó con éxito de lo contrario  ocurrió algún error.

Los parámetros que puede recibir son:

hndWin. Es un número entero que representa al handle del programa que llamó a la función. 
En Visual FoxPro lo normal es poner cero.

cAction. La acción que deseamos ejecutar (mira abajo para más detalles).

cFileName. El nombre del archivo o de otro objeto, en el cual la acción será ejecutada.

cParams. Si en cFileName pusimos el nombre de un programa ejecutable, estos son los parámetros que ese programa recibiría en la línea de comandos.

cDir. Si en cFileName pusimos el nombre de un programa ejecutable, esta es la carpeta 
(o directorio) por defecto, es decir donde se iniciará.

nShowWin. El estado inicial de la ventana (1=normal, 2=minimizada, 3=maximizada).

Ejemplo 1:

Como abrir un Archivo ZIP

lcAction   = "open"
lcFileName = "E:\BACKUPS\CONTABILIDAD\CONTA2017-10-10.ZIP"
=ShellExecute(0, lcAction, lcFileName, "", "", 1)

Como Abrir una plantilla en Excel

lcAction   = "open"
lcFileName = "E:\EXCEL\2017\COMPRAS-ENERO.XLS"
=ShellExecute(0, lcAction, lcFileName, "", "", 1)

Como imprimir un documento en Word

lcAction   = "print"
lcFileName = "C:\WORD\2016\PRESUPUESTOS\PRESUP295.DOC"
=ShellExecute(0, lcAction, lcFileName, "", "", 1)

Como Abrir una pagina Web

lcAction   = "open"
lcFileName = "www.gmail.com"
=ShellExecute(0, lcAction, lcFileName, "", "", 1)

Como abrir una Carpeta

lcAction   = "open"
lcFileName = "C:\FOTOGRAFÍAS"
=ShellExecute(0, lcAction, lcFileName, "", "", 1)

Como escuchar Canciones

lcAction   = "play"
lcFileName = "C:\CANCIONES\INGLÉS\MY WAY.MP3"
=ShellExecute(0, lcAction, lcFileName, "", "", 1)

Esto son algunos de los Errores más comunes en Shellexecute:

Como ya sabes, si la función ShellExecute() devuelve un número mayor que 32 eso significa que fue ejecutada con éxito, en cambio un número menor que 32 nos indica que ocurrió un error.

2. Invalid path or filename. No existe el archivo

8. Insuficient memory. No hay suficiente memoria para realizar la acción pedida

11. Invalid EXE file. El archivo no es ejecutable o está corrompido

31. Invalid action. No existe esa acción o ninguna aplicación está asociada con el archivo

1 comentarios: