PDA

Ver la Versión Completa : evitar ejecutar la misma aplicacion 2 veces


noe
05-04-2005, 00:22:52
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 (http://www.clubdelphi.com/users/roman/)

// 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 (http://www.clubdelphi.com/users/roman/). Para usar la unidad únicamente tienes que incluirla en el archivo dpr (menú Project|View Source):


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 (http://www.lmd.de).

Un saludo.

noe
07-04-2005, 18:36:28
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
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
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 (http://romansg.net/index.php?pg=uiapp).

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 (http://www.clubdelphi.com/foros/showpost.php?p=280992&postcount=3)

Saludos.

Alliance
26-05-2008, 19:30:03
¿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.

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