在windows平台上,利用调用GetLastInputInfo()函数得到最后一次输入事件发生的时间,通过计算当前时间与最后输入时间的时间差得到系统闲置时间。
定义:
#define _WIN32_WINNT 0x0500
#include <windows.h>
#define EXPORT __declspec(dllexport)
typedef BOOL (WINAPI *GETLASTINPUTINFO)(LASTINPUTINFO *);
static HMODULE g_user32 = NULL;
static GETLASTINPUTINFO g_GetLastInputInfo = NULL;
初始化:
g_user32 = LoadLibrary("user32.dll");
if (g_user32) {
g_GetLastInputInfo = (GETLASTINPUTINFO)GetProcAddress(g_user32, "GetLastInputInfo");
}
得到系统闲置时间:
int idle_time = 0;
if (g_GetLastInputInfo != NULL) {
LASTINPUTINFO lii;
memset(&lii, 0, sizeof(lii));
lii.cbSize = sizeof(lii);
if (g_GetLastInputInfo(&lii)) {
idle_time = lii.dwTime;
}
idle_time = (GetTickCount() - idle_time) / 1000;
}
在Linux下,则是利用X11屏保扩展函数中的相关调用得到系统闲置时间。
定义:
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/scrnsaver.h>
#include <gdk/gdkx.h>
#include <gtk/gtk.h>
得到系统闲置时间:
static XScreenSaverInfo *mit_info = NULL;
int idle_time, event_base, error_base;
gtk_init (NULL, NULL);
if (XScreenSaverQueryExtension(GDK_DISPLAY(), &event_base, &error_base))
{
if (mit_info == NULL)
mit_info = XScreenSaverAllocInfo();
XScreenSaverQueryInfo(GDK_DISPLAY(), GDK_ROOT_WINDOW(), mit_info);
idle_time = (mit_info->idle) / 1000;
}
else
idle_time = 0;
1 条评论:
Oi, achei seu blog pelo google está bem interessante gostei desse post. Gostaria de falar sobre o CresceNet. O CresceNet é um provedor de internet discada que remunera seus usuários pelo tempo conectado. Exatamente isso que você leu, estão pagando para você conectar. O provedor paga 20 centavos por hora de conexão discada com ligação local para mais de 2100 cidades do Brasil. O CresceNet tem um acelerador de conexão, que deixa sua conexão até 10 vezes mais rápida. Quem utiliza banda larga pode lucrar também, basta se cadastrar no CresceNet e quando for dormir conectar por discada, é possível pagar a ADSL só com o dinheiro da discada. Nos horários de minuto único o gasto com telefone é mínimo e a remuneração do CresceNet generosa. Se você quiser linkar o Cresce.Net(www.provedorcrescenet.com) no seu blog eu ficaria agradecido, até mais e sucesso. If is possible add the CresceNet(www.provedorcrescenet.com) in your blogroll, I thank. Good bye friend.
发表评论