代码之家  ›  专栏  ›  技术社区  ›  Magix

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

  •  1
  • Magix  · 技术社区  · 9 年前

    我知道我可以使用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 回复  |  直到 9 年前
        1
  •  1
  •   Community CDub    7 年前

    标准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 注意一些有关C GUI库的问题也可能会有所帮助 already exist .