Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   MI aplicación no termina el proceso en Windows XP (https://www.clubdelphi.com/foros/showthread.php?t=20687)

perrogrun 22-04-2005 10:44:00

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

perrogrun 22-04-2005 11:07:31

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


La franja horaria es GMT +2. Ahora son las 09:23:53.

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