Home > Preguntas Más Frecuentes - SiteKiosk > Construir un watchdog de aplicaciones externas con scripts
Construir un watchdog de aplicaciones externas con scripts
El navegador seguro de SiteKiosk proporciona un método para ejecutar aplicaciones externas en el contexto del usuario restringido SiteKiosk.
Simplemente puede añadir las aplicaciones deseadas con la ayuda del configurador de SiteKiosk.
Entonces SiteKiosk arrancará las aplicaciones mediante el interfaz de navegador, y también las cerrará cuando se active el salvapantallas o el usuario cierre su sesión.
La configuración de SiteKiosk también el permite arrancar una aplicación automáticamente en el arranque de SiteKiosk, o cuando el salvapantallas se cierra o un usuario cierra su sesión.
Puede haber otras situaciones en las que quiera tener todavía mas control de las aplicaciones externas que necesita ejecutar con SiteKiosk. Por ejemplo si no quiere utilizar las funciones del navegador de SiteKiosk sino simplemente utilizar SiteKiosk para proteger el sistema operativo de manipulaciones su objetivo principal puede ser ejecutar de forma continua una aplicación específica.
El problema es que puede existir alguna aplicación que por ejemplo permita al usuario cerrarla. Aquí es donde el SiteKiosk Object Model puede ser útil. Se trata de una extensión de JavaScript propietario (totalmente compatible con JavaScript estándar), que le permite controlar casi cualquier aspecto de SiteKiosk y que es especialmente interesante a la hora de crear scripts personalizados muy útiles.
Comencemos resumiendo lo que queremos conseguir con el script que vamos a crear.
SiteKiosk debería ejecutarse en modo de pantalla completa en segundo plano, mientras que en primer plano debería quedar visible una aplicación externa.
El primer paso sería crear una página en blanco para que SiteKiosk funcione en segundo plano, por supuesto también puede utilizar de forma alternativa una página con un diseño apropiado.
Este es el código para la página en blanco:
<html>
<head>
</head>
<body>
</body>
</html>
Guarde el archivo, por ejemplo, como background.html (o cualquier otro nombre que prefiera) y asegúrese de colocarlo en la carpeta:
..\SiteKiosk\html\
Lo siguiente es el código Javascript que utilizaremos para controlar la aplicación. Y el primer paso es arrancar la aplicación externa.
Para ello utilizaremos el método Run de la colección ExternalApps. Como necesitaremos utilizar ese código más veces, lo colocaremos en una función:
function StartMyApp(){
SiteKiosk.ExternalApps.Run("c:\\pathtomyapplication\\myapplication.exe", true);
}
El método Run básicamente espera que la ruta a la aplicación y el valor booleano que determina si SiteKiosk debe comprobar primero si esta aplicación ya está funcionado.
Si ya está funcionado, se maximizará y se hará foco sobre ella.
Para los propósitos de este script el valor booleano debería ser "true" para asegurar que no está iniciada ninguna otra instancia de esta aplicación.
SiteKiosk o el SiteKiosk Object Model no pueden evitar que el usuario cierre una aplicación que proporciona opciones para hacerlo (salvo que están incluyan alguna ventana o cuadro de diálogo, en cuyo caso se podría controlar mediante el control de ventanas y cuadros de diálogos). Por tanto ahora necesitamos el código que monitorice la aplicación.
Utilizaremos el evento OnRemove del objeto WindowList.
El evento OnRemove se dispara cuando una ventana de aplicación (esto significa cualquier ventana que genera una pestaña en la barra de tareas de Windows) se cierra.
Asignamos una función al evento OnRemove, en este caso la llamaremos también OnRemove.
Esa función recibe un parámetro que es un objeto WindowInfo que incluye información sobre la ventana que se acaba de cerrar.
Utilizamos la propiedad ItemText de ese objecto para comprobar si el título de la ventana que se acaba de cerrar es la de la aplicación monitoreada.
Si ese el caso, significa que nuestra aplicación se acaba de cerrar, y necesitaremos arrancarla de nuevo. Para ello bastará con llamar a la función que habíamos creado para arrancar nuestra aplicación.
El código para todo esto es así de simple:
SiteKiosk.WindowList.OnRemove = OnRemove;
function OnRemove(skwin){
if(skwin.ItemText === "WindowTitleOfApplicationToWatch"){
StartMyApp();
}
}
Dependiendo de la velocidad de proceso para arrancar SiteKiosk y la aplicación al mismo tiempo, o del tiempo que la aplicación tarde en finalizarse completamente, se podría perder el foco del programa o incluso o el propio arranque. Para evitar que esto suceda podemos añadir un pequeño retraso antes de arrancar la aplicación, por lo que puede necesitar probar cuál es el mejor tiempo para su aplicación concreta.
Añadiremos el método AddDelayedEvent al objeto Scheduler a nuestro script controlapp.js en todos los sitios donde queremos iniciar la aplicación:
SiteKiosk.Scheduler.AddDelayedEvent(5000, StartMyApp);
Ya lo tenemos. Al juntar todas las partes el código completo sería como este:
SiteKiosk.WindowList.OnRemove = OnRemove; //se dispara si se ha cerrado una ventana
SiteKiosk.Scheduler.AddDelayedEvent(5000, StartMyApp); //arranca la aplicación deseada después de 5000 ms
function StartMyApp(){
SiteKiosk.ExternalApps.Run("c:\\windows\\notepad.exe", true);
}
function OnRemove(skwin){
//comprueba si la aplicación que debería funcionar se ha cerrado
if(skwin.ItemText === "Bloc de Notas"){
//la aplicación se ha cerrado, se reiniciará de nuevo
SiteKiosk.Scheduler.AddDelayedEvent(500, StartMyApp); //arranca la aplicación deseada pasados 500ms
}
}
Salve el código como controlapp.js (o cualquier otro nombre que prefiera) y asegúrese de colocarlo en la carpeta ..\SiteKiosk\html\.
Ahora abra el asistente de configuración de SiteKiosk y cree una nueva configuración. Defina una contraseña, elija el archivo background.htm (o el que haya creado en lugar de una página en blanco), como página de inicio, y entonces vaya a Diseño de Página de Inicio y Navegador, y haga clic en "Pantalla completa" y aplique el ajuste de "usar pantalla completa de forma permanente".
Todavía en diseño de navegador haga clic en el botón "Avanzado" y añada el archivo conrolapp.js como un script externo
(opcional: en la misma configuración marque la opción "Mantener la pantalla principal de SiteKiosk en segundo plano").
Salve la configuración y pruebe el script.
Ejecutar una aplicación en intervalos regulares de tiempo
Esta es otra posibilidad alternativa: crear un script externo que compruebe que la aplicación EXE está funcionando en intervalos regulares de tiempo.
Para esto utilizaremos los siguientes métodos:
- AddPeriodicEvent Method
- IsProcessRunning Method
- Run Method
El siguiente script de ejemplo comprobará que el proceso “notepad.exe” se está ejecutando cada 30 segundos (30000 ms).
Si no está ejecutando, arrancará notepad.exe de nuevo.
evtid = SiteKiosk.Scheduler.AddPeriodicEvent(30000, checkExecution);
function checkExecution(eventID){
if (SiteKiosk.ExternalApps.IsProcessRunning("notepad.exe") == false){
SiteKiosk.ExternalApps.Run("C:/Windows/notepad.exe", true);
SiteKiosk.Logfile.Notification('Aplicación iniciada');
}
}
Vea también ...
Volver arriba