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):
Código Delphi
[-]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); if Wnd <> 0 then
begin
SendMessage(Wnd, WM_CLOSE, 0, 0); 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