Sábado, 2024-11-23, 0:08 AM
Le saludo visitante | RSS
[ Mensajes nuevos · Participantes · Reglas del foro · Búsqueda · RSS ]
NUEVO TEMA CREADO
este foro ya no estar en su mantenimiento no mudamos a la siguiente dirección

www.inforprograma.net

  • Página 1 de 1
  • 1
detección de inactividad del usuario
jesuliFecha: Jueves, 2010-04-29, 2:19 PM | Mensaje # 1
Teniente
Grupo: Administradores
Mensajes: 77
Estatus: Offline


detección de inactividad del usuario
En mucha ocasiones deseamos saber cuando un usuario esta inactivo, sin usar el pc en un determinado tiempo, para que nuestro aplicación haga alguna operación con el pc cuando destete la inactividad de usuario.

Que nuestra aplicación haga tarea cuando el usuario este inactivo es muy beneficiosa tanto para el programa como para el usuario, ya que cuando el pc este en este estado de inactividad, es cuando se le puede dar mas trabajo a pc sin que el usuario tenga aguanta la tarea intensiva de programa.

Calcular el tiempo de inactividad
Para saber cuando un usuario esta inactivo se usar dos método el primero averigua el tiempo que lleva iniciado el sistema operativo, y el segundo averigua el tiempo de la entrada de usuario por ultima vez, si restamos el tiempo de inicio de sistema, con el tiempo de la ultima entrada de usuario y de esta manera tendremos la inactividad de usuario.

Para saber el tiempo que lleva iniciado el sistema operativo podéis consulta este post http://www.codigocero.ucoz.es/forum/3-63-1

para saber el tiempo de cuando el usuario entro por ultima vez tenemos que hacer llamada a la api de windows por medio de un pivote.

Para seguir los ejemplos, cree un proyecto nuevo y agregue una clase llamado "TiempoInactivo".  si no quiere crear la clases "TiempoInactivo" en un archivo separado, bastaria añadirle a tu proyecto los metodos y funciones a tu código de formulario.Como vamos a usar pivote, asegúrese de incluir los siguientes directiva a principio de proyecto.

using System.Runtime.InteropServices;

Declarar GetLastInputInfo
La función de la API que utilizaremos para obtener la hora de la última entrada del usuario es GetLastInputInfo. Esta función utiliza un estructura, Llamado "LASTINPUTINFO", que debe declararse como sigue:

[StructLayout(LayoutKind.Sequential)]
public struct LASTINPUTINFO
{
    public uint cbSize;
    public uint dwTime;
}

La estructura cuenta con dos campos. cbSize se debe establecer en el tamaño de la estructura antes de llama GetLastInputInfo. dwTime se establecerá en el momento de la entrada del usuario por última vez por la llamada a GetLastInputInfo. Este valor devuelto se mide en milisegundos.

Con la estructura definida, la función GetLastInputInfo se puede agregar a la clase TiempoInactivo. Tenga en cuenta el valor de retorno booleano en el código de abajo. Un valor de false indica que ocurrió un error mientras ejecuta la función

[DllImport("user32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

Obtención del tiempo de inactividad
La última tarea es agregar un método a la clase TiempoInactivo que devolverá un TimeSpan que contiene la duración de la inactividad. Si El valor de retorno el nulll, indica que hubo un problema cuando se llama a GetLastInputInfo.

Agregue el método siguiente a la clase TiempoInactivo:

public TimeSpan? GetInactiveTime()
{
    LASTINPUTINFO info = new LASTINPUTINFO();
    info.cbSize = (uint)Marshal.SizeOf(info);
    if (GetLastInputInfo(ref info))
        return TimeSpan.FromMilliseconds(Environment.TickCount - info.dwTime);
    else
        return null;
}

El método realiza varias acciones. En primer lugar, un valor LASTINPUTINFO se crea y se inicializa su tamaño. Si la función devuelve true, el tiempo resultante del campo dwTime se resta del tiempo de sistema  y se transforma en un valor TimeSpan, que se devuelve. Si GetLastInputInfo falla, se devuelve null.

puede descarga desde aquí el codigo fuerte de ejemplo y el fichero de la demos.
Accesible sólo a usuarios




[center][/center]
http://www.codigocero.ucoz.es
 
  • Página 1 de 1
  • 1
Búscar:

Usuario Que ha Visitado el sitio
Copyright MyCorp © 2024
Sitio administrado por el sistema de uCoz