Mac OS X有一种省电功能,可以让操作系统关闭显示器。是否有API可以在代码中检测当前显示器是开启还是关闭状态?
Mac OS X有一种省电功能,可以让操作系统关闭显示器。是否有API可以在代码中检测当前显示器是开启还是关闭状态?
CGDisplayIsAsleep(CGMainDisplayID())
#include <ApplicationServices/ApplicationServices.h>
来访问这些功能。 - Patrick Linskey您可以使用IORegistryExplorer并查找具有所需设置状态信息的节点。Mac上可能存在多个处于不同状态的监视器,因此您必须枚举树以查找所有需要的类类型节点。
睡眠状态在Darwin内核中的IOPMrootDomain.cpp中处理。我相信您可以使用IOKit对其进行探测。 http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/iokit/Kernel/IOPMrootDomain.cpp
类似于:
mach_port_t masterPort;
io_registry_entry_t root;
kern_return_t kr;
boolean_t flag = false;
kr = IOMasterPort(bootstrap_port,&masterPort);
if ( kIOReturnSuccess == kr ) {
root = IORegistryEntryFromPath(masterPort,kIOPowerPlane ":/IOPowerConnection/IOPMrootDomain");
if ( root ) {
CFTypeRef data;
data = IORegistryEntryCreateCFProperty(root,CFSTR("IOSleepSupported"),kCFAllocatorDefault,kNilOptions);
if ( data ) {
flag = true;
CFRelease(data);
}
IOObjectRelease(root);
}
}
return flag;
在IOKit中有一个名为getPowerState()的函数。不确定是否可访问。
希望这可以帮到你。