Power Builder - SIGO CON PROBLEMAS DE EXCEL...

 
Vista:
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

SIGO CON PROBLEMAS DE EXCEL...

Publicado por Antonio (1271 intervenciones) el 19/04/2005 20:47:44
Hola a todos:

En post anteriores he explicado mi caso, y nuestro buen amigo Oscar me ayudo para poder resolver el problema de Excel que se queda alojado en memoria.

nuestro buen amigo Oscar, me indico hacer esto:

xlApp.Application.Activeworkbook.PrintOut()
xlApp.Application.Activeworkbook.close(false)

//Para liberar la memoria usá esta línea:
GarbageCollect ( )

Al final del codigo, pero Excel sigue alojado en memoria y no he podido solucionar el problema...

si alguien tiene más aportaciones, se lo agardecera muchísimo.

Antonio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SIGO CON PROBLEMAS DE EXCEL...

Publicado por Asgard (1957 intervenciones) el 19/04/2005 22:49:31
FUNCTION ULong FindWindowA(ULong classname, String windowname) LIBRARY "user32.dll"
FUNCTION boolean PostMessageA(ulong hwndle,UINT wmsg,ulong wParam,ulong lParam) Library "User32.dll"

Ulong lul_handle, lul_class
String ls_name

UInt lui_quit = 18

SetNull(lul_class)

ls_name = "NOMBRE DEL PROCESO O VENTANA ABIERTA"
// Puedes checarlo presionando CTRL+ALT+SUPR

lul_handle = FindWindowA(lul_class, ls_name)

IF lul_handle > 0 THEN
PostMessageA(lul_handle, lui_quit, 0, 0);
return
Else
MessageBox("Aviso", "La aplicación no está en ejecución. !")
END IF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Gracias Asgard... pero sucede una cosa curiosa

Publicado por Antonio (1271 intervenciones) el 20/04/2005 00:21:21
Hola Asgard...

Mil gracias por tu ayuda, usando el método que me indicaste me dice que no esta abierta la aplicación...

Pero he notado algo curioso, al presionar CTRL+ALT+DEL si esta la aplicación y dice "Excel" (sin comillas) y cuando aplico la funcion que me indicaste me dice que no esta abierta la aplicación, entonces quiere decir que si se cierra excel, pero entonces que demonios es la aplicación de Excel cuando presiono CTRL+ALT+DEL ....

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias Asgard... pero sucede una cosa curiosa

Publicado por Asgard (1957 intervenciones) el 20/04/2005 01:43:02
El problema es que ya no esta la ventana o aplicacion, pero persiste el proceso en la memoria. Es por ello que no te funciono.

Hay otras funciones para eliminar dichos procesos del task manager:

- CreateToolhelp32Snapshot - esta función devuelve una 'imagen' del sistema.
- Process32First - esta función devuelve información del primer proceso de una 'imagen' dada, incluyendo el nombre del ejecutable
- Process32Next - esta función devuelve información del siguiente proceso de la misma 'imagen'

Ante todo, necesitas una DLL externa, PSAPI.DLL. Esta DLL contiene varias funciones que necesitas. Sin esta DLL, no puedes obtener información sobre los procesos que se están ejecutando:

- EnumProcesses -esta función devuelve información acerca del número de procesos que se están ejecutando actualmente, incluyendo ProcessId's
- OpenProcess - con esta función puedes obtener información de un proceso dado.
EnumProcessModules - con ésta información obtendremos el módulo perteneciente al proceso.
- GetModuleBaseName - y finalmente, obtendremos el nombre del ejecutable.

Asi bien deberas hacer un ciclo para barrer los procesos y al llegar al nombre del ejecutable "EXCEL.EXE" matarlo con EndProcess.

Algo laborioso pero puede que valga la pena mientras encuentras el verdadero problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar