PDA

Ver la Versión Completa : Como evitar que una apicacion se ejecute dos veces.


manitoba
25-01-2007, 12:37:44
¿Como podria evitar que una aplicacion compruebe cuando intento ejecutarla si hay otra instancia de la aplicación ejecutandose y asi evitar que se ejecute dos veces a la vez?

Gracias

fdelamo
25-01-2007, 12:56:12
Prueba con esto (es en delphi) pero en Builder las APIs serán iguales (o similares), digo yo


var
Hwnd: Integer;
begin
Hwnd := FindWindow(nil, 'Mi titulo de la aplicacion');

if Hwnd <> 0 then
ShowMessage('Ya está ejecutandose')
else
Application.Title := 'Mi titulo de la aplicacion';


Un saludo

manitoba
25-01-2007, 20:21:03
Muchas gracias ha funcionado , un problema menos.....gracias

fabianbbg
28-05-2007, 16:36:46
hola..
ya lo habia preguntado en ..

http://www.clubdelphi.com/foros/showthread.php?t=25815&highlight=instancia


pero como fue un post muy viejo.. y con personas distintas.. no lo veo mal..preguntar de nuevo..

Es posible evitar la ejecucion del programa dos veces pero contemplando a todos los usuarios simultaneos?
Por ejemplo si dos se conectan con el mismo usuario con escritrio remoto en un W 2003 , al querer ejecutar el programa.. que no le permita ejecutarlo si tiene abierta una instancia del mismo..el otro usuario conectado.

Es posible una cosa asi?..
Muchas gracias

seoane
28-05-2007, 16:50:04
Puedes usar el truco 388 (http://www.clubdelphi.com/trucos/index.php?id=388) para averiguar cuantas instancias de tu ejecutable están ejecutándose. Aunque puede que tengas problemas si lo utilizas con cuentas limitadas, pruebalo, y nos cuentas que resultado obtienes.

Si lo anterior no funciona te sugiero utilizar un método simple pero efectivo, crear un archivo en un directorio al que tengan acceso todos los usuarios, y cada vez que tu aplicación se ejecute lo intentara abrir, denegando el acceso a los demás. De este modo, si se ejecuta una segunda aplicación, al intentar abrir el archivo se obtendrá un error que indicara que la aplicación ya esta en uso.