Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber si un proceso esta activo (https://www.clubdelphi.com/foros/showthread.php?t=77337)

Anel Hernandez 16-01-2012 15:56:11

Saber si un proceso esta activo
 
Hola,

Estoy buscando una funcion de la api de windows ke me permita saber si un programa que mande a ejecutar, del cual conozco su HANDLE (hProcess) esta abierto o cerrado.

Yo mando a ejecutar con ShellExecuteEx.

Gracias

ecfisa 16-01-2012 19:32:07

Hola Anel.

Probá de este modo:
Código Delphi [-]
function ProcessActive(Hnd: THandle): Boolean;
var
  ProcessID: DWORD;
begin
  Result:= GetWindowThreadProcessID(Hnd, @ProcessID) <> 0;
end;

Llamada:
Código Delphi [-]
  ...
  if ProcessActive(HandleProcess) then
    ShowMessage('Activo')
  else
    ShowMessage('Inactivo');
  ...

Saludos.

ecfisa 16-01-2012 21:42:46

Hola.

No recordaba si era necesario el argumento lpdwProcessId... y no, se puede prescindir de él. Es decir que la función puede ser escrita:
Código Delphi [-]
function ProcessActive(Hnd: THandle): Boolean;
begin
  Result:= GetWindowThreadProcessID(Hnd, nil) <> 0;
end;

Un saludo.

Anel Hernandez 17-01-2012 19:17:16

re
 
Gracias, lo voy a probar.

luego de poner el mensaje encontre la forma:
Código Delphi [-]
GetExitcodeProcess(h[k],ExitCode);
     if exitCode<>STILL_ACTIVE then  begin

pero no logro ponerlo en una sola linea. algo asi como:
if GetExitcodeProcess()=algo then ...

Pudieran ayudarme en poner esta variante en una sola linea?

despues vere cual es mas conveniente.

gracias mil


La franja horaria es GMT +2. Ahora son las 16:23:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi