Ver Mensaje Individual
  #1  
Antiguo 12-04-2011
satelier.martin satelier.martin is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 10
Reputación: 0
satelier.martin Va por buen camino
Controlar la ejecución de un proceso

Hola a todos, les cuento que luego de encontrar la forma de embeber un .exe en mi aplicación mas surgieron otras dudas como:

Como hago para controlar que la aplicación que estoy ejecutando se ejecute solo una vez, leí varias formas dentro del foro las cuales obtenían los procesos del sistema para ver si se estaban ejecutando pero pode default el .exe que ejecuto desde mi aplicación esconde el proceso por lo cual no lo ve.

Por lo cual fui por el lado de ejecutar el .exe y esperar a que termine el proceso del .exe que lance así puedo verificar si mi proceso esta levantado y no ejecutar de nuevo.

Pero me di cuenta que si voy al administrador de procesos de windows y termino mi proceso el .exe que ejecute sigue ejecutandose.

Por lo cual tengo dos proguntas como hago para evitar que se ejecute dos veces un .exe el cual el proceso esta escondido ??

ó

Como hago para que cuando se cierre mi programa se cierre este proceso ??


Les dejo mi codigo (estoy ejecutando todo desde el dproj):
Código Delphi [-]
program L2exe;


uses Forms,ShellAPI,Windows,TLHelp32,SysUtils,Messages;

const
CM_RESTORE = WM_USER + $1000;

{$R *.res}
var
   RvHandle : hWnd;
   infoInicio : TStartupInfo;
   infoProceso : TProcessInformation;
   numProceso : Integer;
begin

  {Si existe otra instancia ya ejecutandose}

  RvHandle := FindWindow('L2exe.exe', NIL);
  if RvHandle > 0 then
  begin
    Application.Terminate;
  end;

  FillChar (infoInicio, SizeOf(infoInicio), 0);
  infoInicio.cb := SizeOf(infoInicio);
  Application.MessageBox('antes del call procces',
                                'Error', MB_ICONEXCLAMATION);
  if CreateProcess(PChar('L2.exe'), nil,
      nil, nil, false, 0, nil, nil,
      infoInicio, infoProceso) then
   numProceso := infoProceso.hProcess;

   WaitForSingleObject (numProceso, INFINITE);

   Application.Terminate;
end.

Última edición por ecfisa fecha: 13-04-2011 a las 07:28:41. Razón: Agregar ETIQUETAS [DELPHI] y [/DELPHI]
Responder Con Cita