1

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

4

1 回答 1

1

标准 C 有time.h, 里面有函数timedifftime。这些可用于通过存储事件之间的先前值来计算用户输入之间的时间。

这是一个例子。(为简洁起见,已删除错误检查)

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 与 C一起使用,并且有各种跨平台C++ 库。注意一些关于已经 存在的 C GUI 库的问题也可能会有所帮助。

于 2015-08-22T06:14:23.000 回答