![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
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
__________________
instruccionesymanuales.com, para el que necesite un manual. Última edición por perrogrun fecha: 22-04-2005 a las 11:06:13. |
|
#2
|
|||
|
|||
|
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;
__________________
instruccionesymanuales.com, para el que necesite un manual. |
![]() |
|
|
|