Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Matar un Archivo de Excel desde Delphi (https://www.clubdelphi.com/foros/showthread.php?t=46040)

raverri 22-07-2007 02:20:14

Matar un Archivo de Excel desde Delphi
 
Cordial Saludo.

Estoy desarrollando una aplicación que requiere matar un archivo de Excel que ha superado un determinado tiempo de ejecución (time out).

He consultado en los foros y he encontrado que se puede matar una aplicación ejecutable (exe) pero en mi caso no aplicaría porque en el pc hay varias aplicaciones de excel corriendo diferentes archivos.

Por ejemplo si hay tres aplicaciones de Excel ejecutándose simultáneamente (Archivo1.xls, Archivo2.xls, Archivo3.xls) en el administrador de procesos saldría:

EXCEL.EXE
EXCEL.EXE
EXCEL.EXE

La pregunta es hay algún modo de saber el nombre del archivo de Excel (*.xls) que se está ejecutando con la aplicación para poder matarlo?

Cada archivo se abre en una aplicación de Excel diferente.

Espero haberme hecho entender.


Muchas Gracias por la ayuda.

Neftali [Germán.Estévez] 23-07-2007 09:58:56

¿El título de las tres ventanas de Excel es diferente?
¿Indicativo del archivo?

Lo digo porque eso te podría servir para acceder al HAndle de la ventana distinguiendolas por el título.
API FindWindows.

¿Hay esa posibilidad?

raverri 23-07-2007 19:39:16

Gracias por contestar el mensaje.

Efectivamente cada aplicación de Excel tiene un título diferente en la ventana y con FindWindow podría buscarla y tratar de cerrarla con estas instrucciones:


procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
begin
h := FindWindow(nil, 'Título Ventana Principal');
if h <> 0 then PostMessage(h, WM_CLOSE, 0, 0);
end;

Pero en este mismo foro leí que en realidad este método no "mata" del todo a la aplicación
ni libera los recursos. De hecho la probé pero el archivo de Excel sigue en uso.


También veo que el handles que devuelve con FindWindow no tiene ninguna relación
con el id del proceso en el administrador de tareas.

Te agradezco cualquier otro comentario o recomendación al respecto.

Neftali [Germán.Estévez] 24-07-2007 10:40:06

¿Has probado con el mensajeWM_QUIT en lugar del WM_CLOSE?


La franja horaria es GMT +2. Ahora son las 07:40:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi