Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2008
RaulChemical RaulChemical is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 59
Poder: 21
RaulChemical Va por buen camino
Matamos el excel

Buenas....

En algunos otros puntos de la aplicación, a petición del cliente, matamos el excel. Para matarlo, llamamos a esta función que encontramos en el TrucoMania (creo).

Código Delphi [-]
function KillTask(FileName:String):integer;
var
  ContinueLoop:BOOL;
  FSnapshotHandle:THandle;
  FProcessEntry32:TProcessEntry32;
const
  PROCESS_TERMINATE=$0001;
begin
Result:=0;
  FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
  ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
  while integer(ContinueLoop)<>0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=UpperCase(FileName)) or
       (UpperCase(FProcessEntry32.szExeFile)=UpperCase(FileName))) then
      Result:=Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),
                                       FProcessEntry32.th32ProcessID),0));
    ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

Espero que te sirva la función o parte de ella.

Suerte.
__________________
ash nazg durbatulûk
ash nazg gimbatul
ash nazg thrakatulûk
agh burzum-ishi krimpatul
Responder Con Cita
  #2  
Antiguo 21-02-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Muchas gracias por tu rápida respuesta,

el caso es que la función que me has pasado no consigue matarme el proceso de Excel.
He conseguido detectar si un fichero en cuestión se está ejecutando con la siguiente función:

Código:
function EstaEjecutandose (FileName:string): boolean;
var H:word;
begin
     H := CreateFile(PChar(FileName), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
     Result := (H >= 65535);
     CloseHandle(H);
end;
de esta manera controlo que un mismo fichero no intenten
abrirlo dos veces, pero lo que quería era poder matar el proceso
que se está ejecutando y a continuación abrir una nueva instancia.
Hago una llamada a la función KillTask pero no hace nada, no se
si la estoy utilizando bien, simplemente hago lo siguiente:

Código:
   if EstaEjecutandose(FileName) then
       KillTask(FileName)
¿Hay algo que se me escape que pueda estar haciendo mal?

Muchas gracias de nuevo.

Un saludo.
Responder Con Cita
  #3  
Antiguo 21-02-2008
RaulChemical RaulChemical is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 59
Poder: 21
RaulChemical Va por buen camino
Yo llamo al killtask así y funciona:

Código Delphi [-]
KillTask('EXCEL.EXE');

Prueba así a ver....
__________________
ash nazg durbatulûk
ash nazg gimbatul
ash nazg thrakatulûk
agh burzum-ishi krimpatul
Responder Con Cita
  #4  
Antiguo 21-02-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Ok, funciona, como el parámetro de la función KillTask era Filename pensé que había que pasarle el nombre del fichero en lugar del proceso, me había echo un lio.

Muchas gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cerrar conexión al cerrar formulario arantzal Conexión con bases de datos 5 09-08-2006 12:43:52
cerrar objeto de excel mak8888 Servers 4 11-02-2006 00:11:04
Cerrar Excel EstebanWeb Servers 5 20-12-2004 10:05:02
Cerrar excel desde una aplicaion delphi VolaRe Servers 0 02-05-2004 20:41:20
al cerrar un libro se me cierra el Excel! haron Servers 0 30-05-2003 11:07:26


La franja horaria es GMT +2. Ahora son las 03:49:04.


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