检索用户空闲时间的多平台方式
multiplatform way to retrieve user idle time
我知道我可以使用 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 中的用户空闲时间?如果没有,哪些图书馆可以帮助我做到这一点,以免成为 OS-依赖者?
标准 C 有 time.h
, in there are the functions 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+ and SDL are popular libraries for C with different uses. There are ways to use Tk with C, and there are various cross-platform C++ libraries. It may also be helpful to note some of the questions regarding C GUI libraries that already exist.
我知道我可以使用 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 中的用户空闲时间?如果没有,哪些图书馆可以帮助我做到这一点,以免成为 OS-依赖者?
标准 C 有 time.h
, in there are the functions 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+ and SDL are popular libraries for C with different uses. There are ways to use Tk with C, and there are various cross-platform C++ libraries. It may also be helpful to note some of the questions regarding C GUI libraries that already exist.