2011-04-01 9 views
5

He utilizado el código mencionado here para calcular el tiempo de inactividad del sistema a través de un servicio de ventana. Pero en Windows 7 & Vista siempre obtengo el LastInputInfo.dwTime como cero por el cual no puedo calcular el tiempo de inactividad del sistema. He dado el ejemplo de código a continuación.Valor inactivo del sistema no se puede calcular en Windows 7 utilizando el servicio de ventana en C#

// If we have a value from the function 
if (GetLastInputInfo(ref LastInputInfo)) 
{ 
    // Get the number of ticks at the point when the last activity was seen 
    LastInputTicks = (int)LastInputInfo.dwTime; 
    // Number of idle ticks = system uptime ticks - number of ticks at last input 
    IdleTicks = systemUptime - LastInputTicks; 
} 

Cuando la prueba el mismo código en una aplicación de Windows tengo la correcta dwTime. Necesito tener el dwTime correcto en mi servicio para calcular el tiempo de inactividad correcto del sistema.

Por favor, ayuda con algunos ejemplos

Respuesta

2

No creo que será capaz de utilizar GetLastInputInfo en servicio de las ventanas en Windows 7. Esto no es sobre el código, se trata de un servicio endurecimiento en Vista y versiones posteriores.

Lea esto: Services isolation in Session 0 of Windows Vista and Longhorn Server

+0

¿Hay alguna manera de evitar este servicio que se ejecuta .. decisiones en la sesión de usuario – deepu

+0

Bueno, se puede crear eventual aplicación de Windows estándar (que se iniciará cuando se inicia Windows) que enviará al tiempo de inactividad su servicio a través de algún mecanismo de IPC (comunicación entre procesos). – HABJAN

+0

O maby puede ayudarse a sí mismo con el tiempo de inactividad de la CPU (si lo necesita). Consulte este artículo: http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/c39b416c-e959-41e2-a57e-c02f7b22cc1d – HABJAN

Cuestiones relacionadas