Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   evitar ejecutar la misma aplicacion 2 veces (https://www.clubdelphi.com/foros/showthread.php?t=20054)

noe 05-04-2005 00:22:52

evitar ejecutar la misma aplicacion 2 veces
 
Saludos a todos los compañeros de este foro. un saludo muy cordial.

Bueno, mi pregunta es la siguiente. ¿Como puedo evitar que un usuario ejecute la misma aplicacion que realice mas de una vez?.

Bueno para este sistema uso tablas paradox y delphi 5. (Es que el sistema ya esta viejito).

Saludos a todos en verdad este foro resulta de mucha ayuda para todos los que estamos en este rollo.

Atte Noe. ;)

roman 05-04-2005 01:33:35

Prueba con la unidad UIApp de mi página

// Saludos

noe 06-04-2005 19:48:22

Gracias roman por tu respuesta pero no logre resolverla podrias explicarme como lo hago con la funcion findwindow.
O mejor te agradecere me proporciones algo de codigo, si es que me puedes hacer el favor. :p

Gracias de todos modos.

roman 06-04-2005 20:25:14

Pues el código ya te lo he proporcionado. ¿Qué es lo que no funciona?

La unidad UIApp no hace uso de la función FindWindow justamente por los motivos que explico en mi página. Para usar la unidad únicamente tienes que incluirla en el archivo dpr (menú Project|View Source):

Código Delphi [-]
program Project1;

uses
  UIApp,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Únicamente con esto se impide la ejecución de la segunda instancia.

Acabo de probar con Delphi 5 y funciona bien.

// Saludos

Toñico 07-04-2005 16:32:39

Hola Noe,

también puedes usar un componente que está incluido en la colección LMD-Tools SE. La colección es de pago, aunque hay muchos componentes libres. la web donde los puedes encontrar es www.lmd.de.

Un saludo.

noe 07-04-2005 18:36:28

Gracias roman
 
Muchas gracias Roman, ya funcionó, solo era eso, incluir la unidad en el archivo dpr n el uses, funciona a la perfeccion.

No cabe duda que siempre nos ayudas a todos.
Gracias
:)

noe 07-04-2005 19:24:47

No se puede abrir otro ejecutable de delphi diferente
 
Roman, todo funciona muy bien, pero fijate que tengo varias aplicaciones realizadas. cuando intente abrir otra no me deja, habria una forma para poder ejecutar aplicaciones pero que sean diferentes?.
bueno se que es mucho pedir pero se agradece la ayuda de antemano.
Gracias.
:)

roman 07-04-2005 20:16:46

Cita:

Empezado por noe
habria una forma para poder ejecutar aplicaciones pero que sean diferentes?.

Claro que sí. Si lees el texto de la página verás que tienes que poner tus propios valores para las cadenas sMutex y sActivar (ambas), esto es, deben ser únicas para cada aplicación. Puedes generar valores oprimiendo Ctrl-Shift-G en el editor de Delphi.

// Saludos

xio 11-01-2008 17:18:09

Podriais pasarme esa unidad?? Necesito eso mismo que explicasteis, que una aplicacion no pueda ejercutarse mas de una vez al mismo tiempo. Un saludo!

dec 11-01-2008 18:09:25

Hola,

Puedes conseguir la unidad "UIApp" en la página web de Román.

xio 11-01-2008 18:52:25

Gracias! Es que los enlaces que hay en los comentarios de arriba no estan bien.

Un saludo!

cascarrabias 30-04-2008 10:58:04

Hola, se que es un post viejo pero, ROMAN, mira estoy utilizando tu unidad, y funciona muy bien lo unico es que la excepcion no es silenciosa para mi, si me restaura o da el foco a la primera instancia pero lo hace mandando un mensage de error, tal vez la cosa este en que estoy usando windows vista!, tambien utilizo Delphi 2007. Saludos y gracias por tu unidad.

El error dice lo siguiente:

Application Error
Exception EAbort in module "nombre poyecto".exe at 002BE4F6.
Operation Aborted.

escafandra 30-04-2008 16:24:19

Aunque está escrito en Builder C++, lo puedes traducir a delphi. Es posible que te sirva de ayuda:

Evitar dos instancias de una aplicación

Saludos.

Alliance 26-05-2008 19:30:03

Cita:

¿Como puedo evitar que un usuario ejecute la misma aplicacion que realice mas de una vez?
hola, eso que quieres se puede hacer de la siguiente manera, con esto el programa se ejecutara una solo vez, si quieres volver a ejecutarla tendras que reniciar la computadora.

Código:

var
 programa: integer;
 begin
 if GlobalFindAtom('Repetido') = 0 then
    Programa := GlobalAddAtom('Repetido');
    else begin
    ShowMessage('No puedes ejecutar el programa mas de una vez');
  end;
end;

espero que te sirva

Greeting


La franja horaria es GMT +2. Ahora son las 23:18:43.

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