zurech |
08-06-2006 10:29:13 |
Matar el proceso de nuestro programa
Este truco, lo que hace es matar el proceso de nuestro programa, finalizando por tanto la aplicación.
Es útil si nuestro programa da pantallazos al cerrarlo y no conseguimos encontrar el error, ya que con este método no los dará.
Nota: Como me contestaron en el foro cuando lo puse, es mucho mejor encontrar el error que hacer este tipo de cosas, pero a unas malas...
Código Delphi [-]
function TFrmPrincipal.soloExe(archivo : String) : String;
var
resultado : String;
x : integer;
begin
for x:=1 to Length(archivo) do
begin
if (archivo[x] = '\') then
resultado := ''
else resultado := resultado + archivo[x];
end;
result := resultado;
end;
function TFrmPrincipal.KillTask(FileName:String):integer;
var
ContinueLoop:BOOL;
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
const
PROCESS_TERMINATE=$0001;
begin
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;
procedure TFrmPrincipal.Terminar();
begin
try
KillTask (soloExe(Application.ExeName));
except on exception do end;
end;
|