Gibt es Benachrichtigungen, wenn der Computer aufgrund des geschlossenen Deckels in den Ruhezustand versetzt wird? Ich kenne die Ruhe-Benachrichtigungen von NSWorkspace
, aber diese werden unabhängig davon gepostet, wie der Computer in den Ruhezustand versetzt wird (auch beim Ruhezustand bei Leerlauf).
Antworten
Zu viele Anzeigen?Ja, Sie können den Zustandswechsel durch Beobachten eines kIOPMMessageClamshellStateChange
Callbacks bearbeiten. Sehen Sie sich die Dateien ControlPlane's LaptopLidEvidenceSource für ein weitgehend vollständiges Objective-C-Codebeispiel an.
https://github.com/dustinrue/ControlPlane/blob/master/Source/LaptopLidEvidenceSource.h https://github.com/dustinrue/ControlPlane/blob/master/Source/LaptopLidEvidenceSource.m
Befindest du dich im Kernel oder im Benutzerbereich?
Im Kernel-Bereich kann sich dein Kext für Power-Management-Ereignisse wie folgt registrieren:
PMinit();
provider->joinPMtree(this);
registerPowerDriver (this, gPowerStates, kPowerNumStates);
Dann kann dein KEXT auf setPowerState() und powerStateDidChangeTo() reagieren.