AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de Windows / Funciones de ejecutables
  • Usando un comando Line
  • Uso de la constante exeActive
  • Valor de retorno de un ejecutable WINDEV
  • Iniciar una aplicación en código de servidor WEBDEV
  • Iniciar una aplicación en Windows Vista (y posterior)
  • Varios
  • Aplicación en segundo plano: Caso específico a partir de Android 10
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Ejecuta un programa (un archivo ejecutable, por ejemplo) desde la aplicación actual.
WINDEVWEBDEV - Código ServidorReportes y ConsultasJavaCódigo de Usuario (UMC)Ajax Esto le permite recuperar:
  • el valor de retorno del ejecutable con la constante exeReturnValue.
  • el identificador del proceso, también llamado PID con la constante exePID.
WINDEVWEBDEV - Código Servidor Observaciones:
  • Desde Windows Vista, es posible que las aplicaciones no se inicien si el mecanismo UAC está activado.. Para obtener más información, consulte observaciones.
  • En Windows de 64 bits, puede acceder a un directorio del sistema desde un ejecutable de 32 bits en un directorio diferente. Para obtener más información, consulte Nativo de 64 bits y nativo de 32 bits.
Ejemplo
WINDEVWEBDEV - Código Servidor
// Start Notepad in default mode
ExeRun("NOTEPAD.EXE Readme.txt")
WINDEVWEBDEV - Código Servidor
// Start a program with long name containing space characters
// For example: Word with "My documents" as working directory

// Solution 1: Using the syntax specific to the multiline strings
// (to avoid doubling or tripling the quotes)
IF ExeRun([
"C:\Program Files\Microsoft Office\Office12\WINWORD.EXE"
], ...
exeActive, exeDontWait, SysDir(srMyDocuments)) = False THEN
Error(ErrorInfo())
END

// Solution 2: Doubling the quotes
ExeRun("""C:\Program Files\Microsoft Office\Office12\WINWORD.EXE""", ...
exeActive, exeDontWait, SysDir(srMyDocuments))
WINDEVWEBDEV - Código Servidor
// Start applications with a file in command line
// Name of application to start
sAppName is string = "C:\Program Files\Adobe\Photoshop 6.0\Photoshp.exe"
// Name of the image to open
sImageName is string = "C:\Users\My Name\Pictures\Buildings\IMGP0993.JPG"

// Equivalent to "Start Run" 
// We must get a character string containing "" such as: 
// "C:\Program Files\Adobe\Photoshop 6.0\Photoshp.exe" 
// "C:\Users\My Name\Pictures\Buildings\IMGP0993.JPG"
IF ExeRun(StringBuild([
"%1" "%2"
], sAppName, sImageName)) = False THEN
Error(ErrorInfo())
END
AndroidWidget Android
// Start Google Maps
ExeRun("com.google.android.apps.maps")
Sintaxis

Ejecutar un ejecutable (en modo de bloqueo o no bloqueo) Ocultar los detalles

<Result> = ExeRun(<Program name> [, <Mode> [, <Wait for end> [, <Working directory>]]])
<Result>: booleano
  • True si se inició el programa,
  • False en caso contrario. ErrorInfo devuelve más detalles sobre el error.
PHP Esta función no devuelve ningún resultado.
<Program name>: Cadena de caracteres
Nombre del programa a iniciar con su ruta y/o los parámetros que deben pasarse al programa (si es necesario).
  • Si no se especifica ruta , el programa se busca en el directorio actual, luego en el directorio de Windows y en los directorios accesibles por PATH.
  • Si el ejecutable corresponde a un nombre largo con espacios, debe utilizarse la siguiente sintaxis:
    <Program name> = " " " Long_name_with_spaces" " Command_line"
AndroidWidget Android Nombre completo de la aplicación que se va a iniciar (con el nombre del paquete) con los parámetros que se van a pasar al programa, si es necesario.
  • Ejemplo: para iniciar la aplicación Google Maps, corresponde a: "com.google.android.apps.maps".
  • Para especificar los parámetros que se pasarán en el comando Line, simplemente utilice la siguiente notación:
    <Program name> = <Package name> <Parameter name 1> = <Parameter value 1>
A partir de Android 11 , el nombre del paquete debe agregarse en el manifiesto de la aplicación.. Puede encontrar un ejemplo en el apartado de preguntas frecuentes: ¿Cómo permitir el lanzamiento de otra aplicación con ExeRun desde una aplicación en Android 11?
<Mode>: Constante opcional de tipo Integer
Modo de inicio de programa (sin acción sobre los programas de DOS):
exeActive
(Valor predeterminado)
El programa ejecutado es Active, "toma control" sobre el programa actual.
exeIconizeEl programa que se ejecuta es Inactive y se minimiza.
AndroidWidget Android Java Esta constante no está disponible.
exeInactiveEl programa que se ejecuta es Inactive: se ejecuta mientras el programa actual mantiene el foco.
AndroidWidget Android Java Esta constante no está disponible.
exeMaximizeEl programa ejecutado es Active, "toma control" sobre el programa en curso (la ventana de ejecución se maximiza).
AndroidWidget Android Java Esta constante no está disponible.
exeNoHandleInheritanceIndica que el ejecutable no debe heredar los manejadores del padre (se aplica a TODOS los manejadores, incluidos los archivos). El ejecutable es independiente de la aplicación que lo lanzó.
Esta constante puede combinarse con otras constantes de lanzamiento de la aplicación.
AndroidWidget Android Java Esta constante no está disponible.
PHP Este parámetro no está disponible.
AndroidWidget Android Java El programa que se ejecuta es siempre Active: se ejecuta "tomando control" sobre el programa en curso.
<Wait for end>: Constante opcional de tipo Boolean
Configura el tiempo de espera antes de reanudar la ejecución del programa actual:
exeDontWait
(Valor predeterminado)
El programa actual y el programa lanzado se ejecutan en paralelo.
exeWaitEl programa actual continúa su ejecución cuando finaliza la ejecución del programa.
AndroidWidget Android La aplicación sólo se puede iniciar en modo de no-bloqueo. Se produce un error fatal si se utiliza la constante exeWait.
PHP Este parámetro no está disponible.
<Working directory>: Cadena de caracteres opcional
Directorio de trabajo de la aplicación a iniciar.
AndroidWidget Android PHP Este parámetro no está disponible.
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindowsLinuxJavaCódigo de Usuario (UMC)Ajax

Iniciando un programa y recuperando un valor Ocultar los detalles

<Result> = ExeRun(<Program name> [, <Mode> [, <Element to return> [, <Working directory>]]])
<Result>: Integro
Valor buscado:
  • Valor de retorno del ejecutable si <Elemento por devolver> corresponde a la constante exeReturnValue.
  • PID del ejecutable si <Elemento por devolver> corresponde a la constante exePID.
ErrorInfo se utiliza para saber si se ha producido un error.
<Program name>: Cadena de caracteres
Nombre del programa a iniciar con su ruta y/o los parámetros que deben pasarse al programa (si es necesario).
  • Si no se especifica ruta , el programa se busca en el directorio actual, luego en el directorio de Windows y en los directorios accesibles por PATH.
  • Si el ejecutable corresponde a un nombre largo con espacios, debe utilizarse la siguiente sintaxis:
    = " " " Nombre_largo_con_espacios" " Comando_Line"
<Mode>: Constante opcional de tipo Integer
Modo de inicio del programa (no hay acción en los programas de DOS).
exeActive
(Valor predeterminado)
El programa ejecutado es Active, "toma control" sobre el programa actual
exeIconizeEl programa que se ejecuta es Inactive y se minimiza
exeInactiveEl programa que se ejecuta es Inactive: se ejecuta mientras el programa actual mantiene el foco
exeMaximizeEl programa ejecutado es Active, "toma control" sobre el programa en curso (la ventana de ejecución se maximiza)
Java Este parámetro no se tiene en cuenta. El programa ejecutado es Active, "toma control" sobre el programa actual.
<Element to return>: Constante opcional
Configura el resultado de la función:
exePIDEl programa actual y el programa lanzado se ejecutan en paralelo. corresponde al identificador de Process creado (también llamado PID) si el ejecutable se ha ejecutado correctamente, 0 si se ha producido un error.
Este identificador puede utilizarse, por ejemplo, en algunas APIs.
Java Esta constante no está disponible.
exeReturnValueEl programa actual reanuda su ejecución cuando finaliza la ejecución del programa.. es el valor de retorno del ejecutable.
<Working directory>: Cadena de caracteres opcional
Directorio de trabajo de la aplicación a iniciar.
Observaciones

Usando un comando Line

Para pasar parámetros en el comando Line a la ejecución del ejecutable, debe especificar el nombre y el ruta completo del ejecutable a ejecutar.
WINDEVAndroid Si el programa ejecutado fue desarrollado con WINDEV o WINDEV Mobile, puede get el comando Line utilizando CommandLine.
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindowsLinuxJavaCódigo de Usuario (UMC)Ajax

Uso de la constante exeActive

Si el proceso en el que se ejecuta la aplicación (con la constante exeActive) ejecuta un código que permite al programa llamador recuperar el foco, el programa llamado pierde el control.
Para que el programa llamado se mantenga enfocado, debe evitar:
  • llamar a otra ventana o cuadro de diálogo después de llamar a la función ExeRun,
  • llamar a la función SetFocusAndReturnToUserInput después de la función ExeRun.
Además, el control Botón (si lo hay) cuyo evento "Click" asociado contiene una llamada a ExeRun no debe ser "Tab Stop" (" Acceder al control con TAB " en la pestaña "UI" del control description ).
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindowsLinuxJavaCódigo de Usuario (UMC)Ajax

Valor de retorno de un ejecutable WINDEV

Un ejecutable WINDEV puede devolver un valor. Para ello:
  1. Crear un entero Variable global al proyecto.
  2. Inicie este Variable con el valor a devolver.
  3. Devuelve esta Variable con la palabra clave RETURN en el código de cierre del proyecto.
WEBDEV - Código ServidorAjax

Iniciar una aplicación en código de servidor WEBDEV

La función ExeRun se ejecuta en el servidor, por lo que la aplicación iniciada también se ejecuta en el servidor.
Por defecto, la aplicación sólo es Visible en el administrador de tareas porque se inicia desde un servicio que no interactúa con el escritorio de Windows.
Para que la ejecución del programa sea Visible en el servidor, debe estar marcada la opción "Permitir que el servicio interactúe con el escritorio" en las propiedades del servicio WEBDEV.
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindowsCódigo de Usuario (UMC)Ajax

Iniciar una aplicación en Windows Vista (y posterior)

Si UAC (Cuenta de usuario control ) está habilitado, la aplicación que usa ExeRun para iniciar otra aplicación debe tener permisos más altos que la aplicación que se inicia.
Por ejemplo, una primera aplicación iniciada con los derechos de administrador puede iniciar una segunda aplicación que no requiera derechos específicos..
Si la segunda solicitud requiere más derechos que la solicitud que la inicia, la segunda solicitud puede no iniciarse. Windows propone permitir la gestión de la compatibilidad con Windows Vista. Si la gestión de la compatibilidad está habilitada, la segunda aplicación se ejecutará durante su próximo inicio.. También es posible utilizar la función ShellExecute.
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindowsLinuxJavaCódigo de Usuario (UMC)Ajax

Varios

  • La función ExeRun no modifica el directorio actual. El directorio actual antes de ejecutar ExeRun es idéntico al directorio actual después de ejecutar ExeRun.
  • Si el programa ejecutado ignora el modo de ejecución especificado, el programa se ejecuta en modo exeActive de forma predeterminada.
AndroidWidget Android

Aplicación en segundo plano: Caso específico a partir de Android 10

A partir de Android 10, no se puede abrir una ventana si la aplicación está en segundo plano.
La función ExeRun puede abrir una ventana. Si se utiliza esta función cuando la aplicación está en segundo plano, se producirá un error fatal.
Consejos:
  • Para saber si la aplicación está en segundo plano, utilice la función InBackgroundMode.
  • Si una aplicación necesita interactuar con el usuario cuando está en segundo plano, se puede mostrar una notificación (con el tipo Notification). La aplicación volverá al primer plano cuando se haga clic en la notificación, si la propiedad ActivateApplication se establece en True. También es posible abrir una ventana desde el procedimiento pasado a la propiedad ActionClick.
Para obtener más información, consulte Android 10: Comportamiento de aplicaciones en segundo plano.
Componente: wd290std.dll
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 23/11/2023

Señalar un error o enviar una sugerencia | Ayuda local