PDA

Ver la Versión Completa : MI aplicación no termina el proceso en Windows XP


perrogrun
22-04-2005, 10:44:00
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.


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