多平台检索用户空闲时间的方法



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

标准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 idlen", diff);
    }
    old = new;
}

实际上获取事件需要特定于平台的代码,有很多库已经完成了大部分(如果不是全部的话)。GTK+和SDL是流行的C语言库,有不同的用途。有很多方法可以将Tk与C一起使用,并且有各种跨平台的c++库。注意一些关于已经存在的C GUI库的问题可能也会有所帮助。

最新更新