Ver Mensaje Individual
  #1  
Antiguo 02-12-2004
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Reputación: 21
VRO Va por buen camino
Problema con la instruccion Halt

Hola a todos, ¿Qué hay denuevo?,
ya estoy en la ultimísima etapa para acabar la aplicación, ahora lo que estoy haciendo es encontrar la forma correcta (sin que me de error) de permitir que mi aplicación no se ejecute más de una vez simultáneamente y que cuando se intente ejecutar más de una vez me de un mensaje de error y me resture la aplicación anteriormente ejecutada.

Para ello primeramente he utilizado un componente llamado TUsedTimeStop, que con unos pequeños arreglos han conseguido que sirve también para permitir que la aplicaciín se ejecute hasta 40 veces (no simultáneamente) sin que se registre y a la 41 hay que registrar la aplicación.
El código fuente de este componente trae una instrucción que es halt que da un error:

" Este programa ha efectuado una operación no admitida y será interrumpido."

Después he utilizado código encontrado en este foro, que paso a postearlo a continuación:
Código Delphi [-]

procedure TForm1.FormCreate(Sender: TObject);
 var Sem  : THandle;
begin
   
   Sem := CreateSemaphore(nil,0,1,'PROGRAM_NAME');
    if ((Sem <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then 
    begin 
    CloseHandle( Sem );
    ShowMessage('This program is already running.'+
          'Este programa ya se está ejecutando...');
    Halt;
end;

Si en vez de halt pongo application.terminate, no me da error pero no se como restaurar la aplicación anterior, es decir, la primera ha ejecutar y me ocurre otra cosa que es como si pegase un pantallazo, es decir, se carga el formulario principal y luego se descarga, es cuestión de segundos pero queda muy feo.

Si alguien pued decirme porque da error el halt y como arreglarlo para que me restaure la plicación en ejecución.

En realidad no se si con esta parrafada de explicación e aclarado mi situación ó lo he empeorado.

De antemano, gracias por prestar su tiempo.

Verónica Ríos.
Responder Con Cita