Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-04-2005
perrogrun perrogrun is offline
Miembro
 
Registrado: ene 2004
Ubicación: Fuengirola
Posts: 41
Poder: 0
perrogrun Va por buen camino
MI aplicación no termina el proceso en Windows XP [SOLUCIONADO]

Hola a todos, vereis este es un mensaje de urgencia, porque tengo un programa que funciona a las mil maravillas en w2k pero me he llevado una gran sorpresa al comprobar que al instalarlo en WXp el sistema cada vez se realentizaba más y he podido comprobar que el programa no termina el proceso cuando lo cierrar, es rarísmo. Lo cierras te vas a ver los procesos y hay está el cabrón!!!!

No se como hacer para que termine el proceso. Cada vez que lo abres ocupa mas espacio en la memoria y la verdad que tengo que ir a instalarselo hoy al cliente y ya no se que hacer. He probado con application.Terminate, application.Destroy, cerrando las conexiones a las bases de datos....

En fin, espero que alguien pueda ayudarme.

Gracias a todos

Última edición por perrogrun fecha: 22-04-2005 a las 11:06:13.
Responder Con Cita
  #2  
Antiguo 22-04-2005
perrogrun perrogrun is offline
Miembro
 
Registrado: ene 2004
Ubicación: Fuengirola
Posts: 41
Poder: 0
perrogrun Va por buen camino
Pues nada, solucionado a lo bestia, cuando quiero cerrar le corto la cabeza al programa.

Código:
uses 
  Tlhelp32; 

(...) 

function KillTask(ExeFileName: string): Integer; 
const 
  PROCESS_TERMINATE = $0001; 
var 
  ContinueLoop: BOOL; 
  FSnapshotHandle: THandle; 
  FProcessEntry32: TProcessEntry32; 
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(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = 
      UpperCase(ExeFileName))) then 
      Result := Integer(TerminateProcess( 
                        OpenProcess(PROCESS_TERMINATE, 
                                    BOOL(0), 
                                    FProcessEntry32.th32ProcessID), 
                                    0)); 
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); 
  end; 
  CloseHandle(FSnapshotHandle); 
end;
Fuente: http://www.pcmasmas.com.ar/viewtopic.php?t=11720
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


La franja horaria es GMT +2. Ahora son las 16:35:32.


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