Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #14  
Antiguo 26-04-2006
Avatar de PoZi
PoZi PoZi is offline
Miembro
 
Registrado: abr 2006
Posts: 11
Poder: 0
PoZi Va por buen camino
Buenas¡¡
Mi programa no tiene ningún botón de log off. Quizá no me haya explicado bien. Esto es lo que deseo hacer:
Al iniciarse la sesión el programa bloquea el Pc (Ctrl+Alt+Supr, Alt+F4, etc.) y muestra un form en el que hay que introducir el usuario y la contraseña. Una vez introducidos, comprueba en una base de datos si son correctos y si el usuario accede en su franja horaria permitida. Si todo está bien, el form se minimiza, se desbloquea el Pc a excepción del Ctr+Alt+Supr (para evitar que cierre mi aplicación) y se guarda el nombre del usuario y la fecha y hora de acceso para tener un control de los usuarios que han accedido al Pc.
El usuario trabaja en el Pc de forma normal. Cuando termina su trabajo cierra la sesión de windows presionando a Inicio/Log off. Si antes de terminar su trabajo llega la hora en que termina su franja horaria de acceso, el programa debe cerrar la sesión. En ambos casos se debe guardar la hora y fecha de salida.

Los problemas surgieron a raiz de utilizar el lanzador que da privilegios de administrador al programa. El ExitWindowsEx que utilizaba para cerrar la sesión de windows cuando terminaba el tiempo de acceso al sistema del usuario dejó de funcionar y el evento OnCloseQuery, donde tenía puesto el código que guardaba la hora y fecha de salida del usuario y que se ejecutaba al cerrar el programa, ya fuera por windows (al presionar al botón log off de windows) o por el propio programa (al ejecutarse la instrucción Close, también dejó de funcionar.

Por estos motivos tuve que cerrar la sesión de windows y guardar los datos de salida del usuario desde el lanzador (como muy acertadamente me indicaste tú Lepe). Y eso hice.

Todo funcionaba a la mil maravillas salvo cuando el lanzador se encontraba esperando en WaitForSingleObject y el usuario decidía cerrar la sesión de windows porque había terminado su trabajo. Supongo que lo que ocurría es que windows le mandaba el mensaje QueryEndSession pero al estar ocupado esperando la finalización del programa principal no respondía con el famoso Msg.Result:=1. Windows entonces mostraba el mensaje End Now. Si se le aceptaba, la sesión se cerraba pero el lanzador no guardaba la hora y fecha de salida. Por eso hice la prueba que mencioné antes:
Cita:
También he probado lo siguiente: Al lanzador...
Espero haberme explicado con la suficiente claridad.
Gracias y Saludos
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dar privilegios del SYSDBA a otro usuario Eolo Firebird e Interbase 3 21-03-2004 05:48:15
Roles - Usuarios y privilegios Osorio Firebird e Interbase 2 13-02-2004 23:34:31
Privilegios en interbase acrophet Conexión con bases de datos 1 09-02-2004 15:07:35


La franja horaria es GMT +2. Ahora son las 14:31:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi