我知道我可以使用C winapi库获得用户空闲时间,如下所示:
LASTINPUTINFO lii = {sizeof(LASTINPUTINFO), 0};
GetLastInputInfo(&lii); //error handling ommitted, not the point here
int CurIdleTime = (getTickCount() - (lii.dwTime))/1000;
也可以在UNIX系统中执行此操作,因为top
命令正确显示用户空闲时间。
是否有一种简单的多平台方式来获取用户在C中的空闲时间?如果没有,哪些库可以帮助我这样做,以便不依赖于操作系统?
答案 0 :(得分:1)
标准C有time.h
,其中有time
个函数
和difftime
。这些可用于计算之间的时间
通过在事件之间存储先前的值来进行用户输入。
这是一个例子。 (为简洁起见,已删除错误检查)
void on_event() {
static time_t old = 0;
time_t new = time(NULL);
if (old != 0) {
double diff = difftime(new, old);
if (diff != 0)
printf("%g seconds idle\n", diff);
}
old = new;
}
实际上,获取事件需要特定于平台的代码,有各种库已经完成了大部分(如果不是全部的话)。 GTK+和SDL是C的流行库,具有不同的用途。有一些方法可以使用Tk with C,并且有各种跨平台C++ libraries。注意already exist的{GUI}库的一些问题可能也会有所帮助。