// 鼠标,键盘事件重置
// 不包括视频播放
public func SystemIdleTime() -> Double? {
var iterator: io_iterator_t = 0
defer { IOObjectRelease(iterator) }
guard IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching("IOHIDSystem"), &iterator) == KERN_SUCCESS else {
return nil }
let entry: io_registry_entry_t = IOIteratorNext(iterator)
defer { IOObjectRelease(entry) }
guard entry != 0 else { return nil }
var unmanagedDict: Unmanaged<CFMutableDictionary>? = nil
defer { unmanagedDict?.release() }
guard IORegistryEntryCreateCFProperties(entry, &unmanagedDict, kCFAllocatorDefault, 0) == KERN_SUCCESS else { return nil }
guard let dict = unmanagedDict?.takeUnretainedValue() else { return nil }
let key: CFString = "HIDIdleTime" as CFString
let value = CFDictionaryGetValue(dict, Unmanaged.passUnretained(key).toOpaque())
let number: CFNumber = unsafeBitCast(value, to: CFNumber.self)
var nanoseconds: Int64 = 0
guard CFNumberGetValue(number, CFNumberType.sInt64Type, &nanoseconds) else { return nil }
let interval = Double(nanoseconds) / Double(NSEC_PER_SEC)
return interval
}
while true {
let t = SystemIdleTime() ?? -1.0
print("idle time: \(t)")
sleep(2)
}
获取系统空闲时间(空闲了多久)
最新推荐文章于 2021-06-24 10:47:20 发布