Yo tengo creada una tabla de usuarios, siendo uno de los campos el nombre de usuario en velneo. Cuando un usuario se conecta, al iniciar el menú principal, hago una serie de operaciones entre ellas marcar que el usuario está conectado de forma que puedo saber quién está en el sistema y quién no.
En el menú principal, tengo un control objeto que enlaza con un formulario de la tabla de usuarios, mostrando entre otras cosas información del usuario que se ha conectado. Es en este formulario en el que tengo un timer que revisa los mensajes que tiene pendientes de recibir y muestra una notificación combinada con growl, lo que hace que mientras tenga la aplicación abierta la notificación le llegará aunque esté haciendo otra cosa.
Si además combinas growl con un cliente para el iphone (howl o prowl) el resultado es que al usuario le llegará la notificación al teléfono aunque no se encuentre fisicamente en la oficina. Esto también se podría hacer con envíos de sms pero las notificaciones push son gratuitas y los sms no.
El problema es que el usuario tiene que cerrar la aplicación desde el botón para tal efecto, de forma que se pueda desmarcar el check de "conectado" del registro de la tabla. Si cierra con la X de la ventana se mantiene como activo, y la próxima vez que quiera iniciar sesión no se lo permite teniendo que pedir sopitas para "desbloquearle" la sesión, así se acostumbran a cerrar bien.
¿podremos alguna vez tomar el control sobre los botones de las ventanas, para evitar que se usen esos botones, y poder controlar los procesos que se ejecutan al Aceptar / Cancelar?