多平台方式来检索用户空闲时间

时间:2015-08-21 21:56:58

标签: c user-input multiplatform idle-timer

我知道我可以使用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中的空闲时间?如果没有,哪些库可以帮助我这样做,以便不依赖于操作系统?

1 个答案:

答案 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}库的一些问题可能也会有所帮助。