Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Finalizar tarea de un programa X (https://www.clubdelphi.com/foros/showthread.php?t=92118)

Soa Pelaez 01-08-2017 14:57:14

Finalizar tarea de un programa X
 
Buen día.

Requiero finalizar una tarea de un programa X desde delphi, ejemplo en el momento hay tres tareas de un programa X, necesito solo cerrar una de las tareas y no toda la aplicación porque lo estaba haciendo con la funcion de KillTask pero este cierra todas las tareas del programa.

Espero puedan ayudarme gracias.

Casimiro Notevi 01-08-2017 15:59:27

Define "Tarea".

Soa Pelaez 01-08-2017 16:41:40

Cita:

Empezado por Casimiro Notevi (Mensaje 519907)
Define "Tarea".

Me refiero a los procesos que se crean en el administrador de tareas al abrir varias veces un mismo programa. Y requiero finalizar la tarea mediante código. Gracias

Casimiro Notevi 01-08-2017 17:10:04

No la "mates" por su nombre, sino por su pid.

Soa Pelaez 01-08-2017 17:28:17

Cita:

Empezado por Casimiro Notevi (Mensaje 519911)
No la "mates" por su nombre, sino por su pid.

Y como se cual es el PID de esa tarea?

ecfisa 01-08-2017 18:24:03

Hola.

Revisa si te sirve este enlace: Eliminar/Cerrar un proceso de Windows - Delphi

Saludos :)

ecfisa 01-08-2017 19:42:08

Hola.

Perdón veo que el enlace no responde exáctamente a tu pregunta, que es como obtener el Pid de una taréa. Para obtener el Pid dado el nombre, podrías hacer:
Código Delphi [-]
function GetPidByProcessName(const ProcName: string): Integer;
  function EnumWndProc(Handle: HWND; ST: TStrings): BOOL; stdcall;
  var
    Caption: array[0..128] of Char;
  begin
    Result := True;
    SendMessage(Handle, WM_GETTEXT, Sizeof(Caption), integer(@Caption));
    ST.AddObject(Caption, TObject(Handle));
  end;
var
  TS: TStrings;
begin
  TS := TStringList.Create;
  try
    EnumWindows(@EnumWndProc, Integer(TS));
    Result := TS.IndexOf(ProcName);
    if Result <> -1 then Result := Integer(TS.Objects[Result]);
  finally
    TS.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessageFmt('Pid: %8.8x',[GetPidByProcessName('Sin título: Bloc de notas')]);
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 22:37:14.

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