Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2011
satelier.martin satelier.martin is offline
Miembro
NULL
 
Registrado: mar 2011
Posts: 10
Poder: 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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Controlar componentes creados en tiempo de ejecución. damirua OOP 1 13-05-2010 14:03:58
Controlar el tiempo de ejecucion cyber_zero Varios 1 22-09-2008 01:01:05
Como Terminar La Ejecucion De Un Proceso kurono Varios 2 01-02-2008 17:10:44
Parar ejecucion de un proceso trohan Varios 3 01-02-2008 17:05:18
Controlar Windows Media PLayer en ejecucion wacala00 Varios 0 26-01-2007 17:08:53


La franja horaria es GMT +2. Ahora son las 09:07:48.


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
Copyright 1996-2007 Club Delphi