如何在OSX 10.7.4中从显示器睡眠中唤醒?

问题描述 投票:2回答:2

在OSX Lion的最新版本中,如何从显示器睡眠中唤醒机器?这是对网络活动的回应。

在10.7.3中,通过以下调用可以实现:

IOPMAssertionID id = 0;
IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
                            kIOPMAssertionLevelOn, reason, &id)

但是,这在10.7.4中不起作用。可以做些什么呢?

macos power-management
2个回答
1
投票

我还没有测试性能影响以及与空闲计时器本身的交互,但是:

io_registry_entry_t regEntry = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler");
if (regEntry != MACH_PORT_NULL) {
        IORegistryEntrySetCFProperty(regEntry, CFSTR("IORequestIdle"), kCFBooleanFalse);
        IOObjectRelease(regEntry);
}

在10.7.4中工作以唤醒屏幕空闲。


0
投票

docs看来,这些天“唤醒”显示器的方式是:

IOPMAssertionID assertionID2;
IOPMAssertionDeclareUserActivity(CFSTR("Your reasoning"),
       kIOPMUserActiveLocal, &assertionID2);

IOPMAssertionCreateWithName(...)从原始问题的方式只是“防止显示进入睡眠”,如果它已经开启(虽然它确实有效,也可以用来防止它进入睡眠时间为duration)。

“保持”显示的文档方法与IOPMAssertionCreateWithName的工作方式大致相同

IOPMAssertionID m_disableDisplaySleepAssertion;    
IOReturn success2 = IOPMAssertionCreateWithDescription(
  kIOPMAssertionTypePreventUserIdleDisplaySleep, reasonForActivity, NULL, NULL, NULL, 0, NULL, &m_disableDisplaySleepAssertion); 
if (success2 == kIOReturnSuccess) {
    // screen will stay on, do you work
    success = IOPMAssertionRelease(m_disableDisplaySleepAssertion);
}

如果你想“打开它并永远保持它”,那么IOPMAssertionDeclareUserActivity紧随其后,或者只是一遍又一遍地调用IOPMAssertionDeclareUserActivity

您也可以调用caffeinate命令行实用程序,我想:)

© www.soinside.com 2019 - 2024. All rights reserved.