我正在开发Qt / C++应用程序,并且我需要简单的功能来检索我在Mac OS X上的用户空闲时间(以秒为单位)。
我发现此代码用于检测用户空闲时间。
#include <IOKit/IOKitLib.h>
/**
Returns the number of seconds the machine has been idle or -1 if an error occurs.
The code is compatible with Tiger/10.4 and later (but not iOS).
*/
int64_t SystemIdleTime(void) {
int64_t idlesecs = -1;
io_iterator_t iter = 0;
if (IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching("IOHIDSystem"), &iter) == KERN_SUCCESS) {
io_registry_entry_t entry = IOIteratorNext(iter);
if (entry) {
CFMutableDictionaryRef dict = NULL;
if (IORegistryEntryCreateCFProperties(entry, &dict, kCFAllocatorDefault, 0) == KERN_SUCCESS) {
CFNumberRef obj = CFDictionaryGetValue(dict, CFSTR("HIDIdleTime"));
if (obj) {
int64_t nanoseconds = 0;
if (CFNumberGetValue(obj, kCFNumberSInt64Type, &nanoseconds)) {
idlesecs = (nanoseconds >> 30); // Divide by 10^9 to convert from nanoseconds to seconds.
}
}
CFRelease(dict);
}
IOObjectRelease(entry);
}
IOObjectRelease(iter);
}
return idlesecs;
}
如何将此代码转换为与我的Qt / C++项目一起使用的C++?
最佳答案
您只需要在链接框架的列表中添加IOKit.framework
。将框架视为共享库和关联资源的 bundle 。 IOKit.framework
位于
/System/Library/Frameworks/IOKit.framework
我不知道如何在Qt项目中做到这一点;该项目应具有要链接的其他框架的列表。
如果是标准的XCode项目,则有一个名为
add a framework to the project
或类似名称的菜单项。关于c++ - 将Objective-C代码转换为C++以检测OS X上的用户空闲时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3547601/