PDA

Ver la Versión Completa : Cerrar aplicación después de transcurrir cierto tiempo


MRS@N
15-03-2016, 17:45:56
Buenas amigos, tengo una inquietud, estoy realizando un aplicación para el control de ordenes de un labor, tengo varias ventana, usuario: es la ventana de ingresar al sistema introduciendo usuario y contraseña, de allí pasa a la ventana principal y de esta principal recorre varias ventanas según sea su caso.

Mi pregunta es la siguiente, necesito saber como hacer para cuando transcurra cierto tiempo sin usar la aplicación todas las ventanas se cierran y solo quedaría abierta la de usuario donde se ingresa de nuevo usuario y clave. AYUDA !!!!!!!!!!!!!!

Perdon estoy utilizando Delphi XE6

ElKurgan
16-03-2016, 11:49:33
Hombre, cerrar todas las ventanas es más o menos fácil si trabajas en windows. Podrías crear una lista con tantas ventanas como tengas abiertas.
Para cerrarlas bastaría con llamar a una función como esta (más o menos, hablo de cabeza):

procedure CierraVentanas(aVentanas: TstringList);
var
i: Integer;
Wnd: HWnd;
pVentana: PChar;
begin
for i := 0 To aVentanas.Count - 1 do
begin
pVentana := PChar(aVentanas[i]);
Wnd := FindWindow(nil, pVentana); // Mira si existe la ventana
if Wnd <> 0 then
begin
SendMessage(Wnd, WM_CLOSE, 0, 0); // Envía el mensaje de cierre a Windows
end;
end;
end;

Otra cosa es lo de volver a llamar al login. Eso habrá que verlo con más cuidado, ya que el método propuesto arriba, si cierra la ventana principal normalmente se cierra la aplicación.

Pero como idea de partida creo que puede valer

Saludos

Neftali [Germán.Estévez]
18-03-2016, 11:06:38
Mi pregunta es la siguiente, necesito saber como hacer para cuando transcurra cierto tiempo sin usar la aplicación todas las ventanas se cierran y solo quedaría abierta la de usuario donde se ingresa de nuevo usuario y clave. AYUDA !!!!!!!!!!!!!!


Si buscas por "inactividad sistema" encontrarás varios procedimientos programados en Delphi para detectar tiempo en que no se ha "utilizado" el equipo.
Una vez alcanzado un determinado periodo de tiempo puedes cerrar formularios o abrir el de Login si es necesario.

Revisa este link (http://www.lawebdelprogramador.com/foros/Delphi/315710-Detectar-el-uso-del-raton-y-teclado.html), o este otro (http://delphimagic.blogspot.com.es/2009/06/detectar-inactividad-en-el-sistema.html), por ejemplo.

Lepe
18-03-2016, 20:12:55
Las ventanas abiertas en tu aplicación, ya están en la lista Screen.Forms, Screen.Datamodules, etc.

Por supuesto para cerrarlas, recorre el bucle a la inversa, o tendrás access violation...for I:= Screen.FormCount-1 downto 0 do Screen.Forms[i].Free;