2

OSX Lion の最新バージョンでは、どのようにしてマシンをディスプレイ スリープから復帰させますか? これは、ネットワーク アクティビティへの応答です。

10.7.3 では、これは次の呼び出しで可能でした。

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

ただし、これは 10.7.4 では機能しません。代わりに何ができますか?

4

2 に答える 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 で動作し、アイドル状態から画面を復帰させます。

于 2012-05-28T19:36:59.847 に答える
0

最近のディスプレイを「目覚めさせる」方法は次のとおりです

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

元の質問からの方法は、既にオンにIOPMAssertionCreateWithName(...)なっている場合にのみ「ディスプレイがスリープ状態になるのを防ぐ」ことです(ただし、機能し、一定期間スリープ状態になるのを防ぐために使用することもできます)。

ディスプレイを「維持」するための docs メソッドの方法は、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ます:)

于 2017-12-15T18:58:22.570 に答える