Visual Foxprogram

Encuentra una gran variedad de ejemplos prácticos que pueden ser útiles para el desarrollo de tu trabajo.

Visual Foxprogram

Podrás encontrar la herramienta necesaria para solucionar tu problema.

Visual Foxprogram

No olvides suscribirte a la página.

Visual Foxprogram

Podrás en contrar ejemplos de clases, creaciones de Menu estilo CSS,crear reportes PDF.

Visual Foxprogram

Todas las Herramientas en un solo sitio VISUAL FOXPROGRAM.

Mostrando entradas con la etiqueta Shellexecute. Mostrar todas las entradas
Mostrando entradas con la etiqueta Shellexecute. Mostrar todas las entradas

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

viernes, 7 de junio de 2019

ShellExecute desde Visual Foxpro

Ques es Shellexecute ?

La función ShellExecute() es realmente muy útil y por eso es muy importante que la conozcamos muy detalladamente para entender toda su funcionalida.

En primer lugar, debemos aclarar que no es una función propia de Visual FoxPro sino que es una función de la API del Windows. 

Con Shellexecute podemos llamar una infinidad de programas el cual realizan muchísimas tareas de utilidad para los programadores y obtienen buenos resultados.

¿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. 

¿Para qué sirve ShellExecute()?

Puede ejecutar cualquier programa que se encuentre en la computadora del usuario.

Descripción de cada una de sus variables.

hWnd: Un manipulador a la ventana padre usada para mostrar un interfaz de usuario o mensajes de error. Este valor puede serNULL si la operación no está asociada con una ventana.

lpOperation: Un puntero a una cadena terminada en cero, usada en este caso como un verbo, que especifica la acción a realizar. El conjunto de verbos disponibles depende del fichero o carpeta en particular. Generalmente, las acciones disponibles desde el atajo de menú del objeto están disponibles como verbos. Los siguientes verbos son de uso general:

edit :Lanza un editor y abre el documento para edición. Si lpFile no es un fichero de documento, la función fallará.

explore :Explora una carpeta especificada por lpFile.

find :Inicia una búsqueda en el directorio especifiado por lpDirectory.

open :Abre el ítem especificado por el parámetro lpFile. El ítem puede ser un fichero o una carpeta.

print :Imprime el fichero especificado por lpFile. Si lpFile no es un fichero de documento, la función fallará.

NULL :Se usa el verbo por defecto, si está disponible. Si no, se usará el verbo "open". Si ningún verbo está disponible, el sistema usa el primer verbo listado en el registro.

lpFile : Un puntero a una cadena terminada en cero que especifica el fichero u objeto en el que se ejecutará el verbo especifiado. Para especificar un objeto del espacio de nombres del Shell, hay que pasar el nombre completo de análisis. Hay que tener en cuenta que no todos los verbos están soportados para todos los objetos. Por ejemplo, no todos los tipos de documentos soportan el verbo "print". Si se usa un camino relativo para el parámetro lpDirectory no se debe usar uno para lpFile.

lpParameters : Si lpFile especifica un fichero ejecutable, este parámetro es un puntero a una cadena terminada en cero que especifica los parámetros a pasar a la aplicación. El formato de esta cadena se determina por el verbo que se va a invocar. Si lpFile especifica un fichero de documento, lpParametersdebe ser NULL.

lpDirectory : Un puntero a una cadena terminada con cero que especifica el directorio de trabajo por defecto para la acción. Si este valor es NULL, se usará el directorio de trabajo actual. Si se proporciona un camino relativo para lpFile, no se debe usar para lpDirectory.

nShowCmd : Las banderas que especifican como se mostrará la aplicación cuando se abra. Si lpFileespecifica un fichero de documento, la bandera sencillamente es pasada a la aplicación asociada. Se deja a la aplicación la decisión de como manejarla. Estos valores se definen en Winuser.h.

SW_HIDE (0) : Oculta la ventana y activa otra.

SW_MAXIMIZE (3): Maximiza la ventana especificada.

SW_MINIMIZE (6) :Minimiza la ventana especificada y activa la siguiente ventana top-level en el orden z.

SW_RESTORE (9) :Activa y muestra la ventana. Si la ventana está minimizada o maximizada, Windows restaura su tamaño y posición originales. Una aplicación debe especificar esta bandera cuando restaure una ventana minimizada.

SW_SHOW (5) :Activa la ventana y la muestra en su tamaño y posición actuales.

SW_SHOWDEFAULT (10) :Asigna el estado de muestra basándose en la bandera SW_ especificada en la estructura STARTUPINFO pasada a la función CreateProcess por el programa que ha lanzado la aplicación. La aplicación debe invocar ShowWindow con esta bandera para asignar el estado de muestra inicial de su ventana principal.

SW_SHOWMAXIMIZED (3)  : Activa la ventana y la muestra como una ventana maximizada.

SW_SHOWMINIMIZED (2) : Activa la ventana y la muestra como una ventana minimizada.

SW_SHOWMINNOACTIVE (7): Muestra la ventana como una ventana minimizada. La ventana activa permanece activa.

SW_SHOWNA (8) : Muestra la ventana en su estado actual. la ventana activa permanece activa.

SW_SHOWNOACTIVATE (4) : Muestra la ventana en su tamaño y posición más reciente. La ventana activa permance activa.

SW_SHOWNORMAL (1) : Activa y muestra la ventana. Si la ventana está minimizada o maximizada, Windows la restaura a su tamaño y posición originales. Una aplicación debe especificar esta bandera cuando muestra la ventana por primera vez.

Sintaxis de Shellexecute:

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

Ejemplo :

DECLARE INTEGER ShellExecute IN shell32.dll ;
  INTEGER hndWin, STRING cAction, STRING cFileName, ;
  STRING cParams, STRING cDir, INTEGER nShowWin
lcAction   = "open"
lcFileName = "https://visualfoxprogram.blogspot.com/"
=ShellExecute(0, lcAction, lcFileName, "", "", 1)