Icm_AplicEjecControl.dll Icm_AplicEjecControl.dll Versión 1.0 Librería para el control de aplicaciones en ejecución. Junio 2010 Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 1 Icm_AplicEjecControl.dll 1 DESCRIPCIÓN La librería es utilizada para comprobar si están en ejecución o no una serie de procesos y la forma de actuar sobre ellos, cerrandolos o no. Funciones de la dll: ValidarAplicacionesAbiertas(procesos: string; controlUsuario, forzarCierre: boolean) Los parámetros son los siguientes: Procesos Lista de procesos que se quieren controlar. Todos ellos deben ir con “;” al final de su nombre incluyendo el último. Por ejemplo: Outlook.exe;Impreofi.exe;winword.exe; controlUsuario true si queremos dar el control al usuario para decidir sobre el cierre de las aplicaciones forzarCierre true si queremos que la librería fuerze el cierre de las aplicaciones. Las acciones se llevarán a cabo sobre las aplicaciones que estén ejecutandose en ese momento que estén incluidas en la lista. 1.1 Pasos 1) Comprueba la lista de las aplicaciones que estan en ejecución a partir de la lista de procesos que se pasa como parámetro a la funcion “validarAplicacionesAbiertas” obteniendo una lista de procesos existentes. 2) Comprueba si la lista de procesos existente contiene un elemento o mas: Si tiene 1 elemento (proceso) comprueba si es el proceso winword.exe u otro diferente realizando para cada caso unos controles diferentes. Si tiene mas de un proceso comprueba todos los procesos que no sean winword.exe según unas pautas expecificas y si es winword.exe con los controles que son específicos para este caso. En todos los casos puedes evitar el cierre de las aplicaciones cancelando el cierre pero en ese caso no se garantiza el correcto funcionamiento de la fusión. Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 2 Icm_AplicEjecControl.dll En el caso de que los 2 parámetros forzarCierre y controlUsuario sean false no se continua con la fusión y se suspende la ejecución del ActiveX. 2 FORMA DE INTEGRARLA. Para integrar la dll hay que realizar las siguientes modificaciones (Utilizamos IcmX_FusionWord como ejemplo) 2.1 Modificaciones en ActiveX. 1) Realizar la llamada a la función de la libreria. Puede hacerse de 2 formas diferentes: Cargando la libreria y su función. function TForm1.cargarEjecutarLibreria(nombreDll, procesos: string; FcontrolUsuario, FforzarCierre:boolean): boolean; type TDLLFunc = function( procesos: string; controlUsuario, forzarCierre: boolean): boolean; stdcall; const fValidarAplicacionesAbiertas: TDLLFunc = nil; var LibHandle: THandle; cancelarF: boolean; begin LibHandle := LoadLibrary(PChar(nombreDll)); try if LibHandle < HINSTANCE_ERROR then begin raise Exception.Create('No se puede cargar Icm_AplicEjecControl.dll ...'); result := false; end else begin try @fValidarAplicacionesAbiertas := GetProcAddress(LibHandle, PChar('validarAplicacionesAbiertas')); if Assigned(fValidarAplicacionesAbiertas) then result := fValidarAplicacionesAbiertas(procesos, FcontrolUsuario, FForzarCierre, cancelarF); if result = true then ShowMessage('El control de aplicaciones ha terminado con exito') else ShowMessage('El control de aplicaciones ha fallado'); except on E: Exception do begin ShowMessage('Error: ' + E.Message); result := false; end; end; end; finally FreeLibrary(LibHandle); end; end; Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 3 Icm_AplicEjecControl.dll Llamando la funcion usando external: function comprobarAplicacionesProcesosAbiertos(procesos, controlUsuario, forzarCierre: boolean): boolean; stdcall; external 'Icm_ControlAplic.dll'; De esta forma únicamente tendremos que llamar a la función cuando la queramos utilizar. 2) Realizar las modificaciones en el IcmXFusionWord.inf para poder generar el .cab Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 4 Icm_AplicEjecControl.dll 2.2 Modificaciones en aplicación Java. Para configurar los parámetros que se le pasan a la libreria hay que hacerlo en este caso en el fichero .conf del ejemplo Java de la siguiente forma: Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 5 Icm_AplicEjecControl.dll Realizar los cambios en ActiveXBean.java Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 6 Icm_AplicEjecControl.dll Realizar los cambios en AbreActiveX.java Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 7 Icm_AplicEjecControl.dll Realizar los siguientes cambios en IcmXFusionDoc.jsp Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 8 Icm_AplicEjecControl.dll NOTA: Para la impresión masiva es necesario pasar: ForzarCierre true ControlUsuario false Procesos winword.exe; de esta forma no se detendrá en todos los documentos para preguntar que queremos hacer con los procesos abiertos. Tan sólo para la primera tanda y para el primer documento deberá informar al usuario. Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 9