Programmatically put a Mac into sleep

后端 未结 6 1087
清歌不尽
清歌不尽 2021-02-03 13:21

I can\'t find any instructions how to put a Mac programmatically into sleep mode (in Objective-C). I\'m sure it should be only one line, but could you give me a hint?

6条回答
  •  情书的邮戳
    2021-02-03 14:03

    #include  
    #include 
    #include 
    
    SendAppleEventToSystemProcess(kAESleep);
    
    OSStatus SendAppleEventToSystemProcess(AEEventID EventToSend)
    {
        AEAddressDesc targetDesc;
        static const ProcessSerialNumber kPSNOfSystemProcess = { 0, kSystemProcess };
        AppleEvent eventReply = {typeNull, NULL};
        AppleEvent appleEventToSend = {typeNull, NULL};
    
        OSStatus error = noErr;
    
        error = AECreateDesc(typeProcessSerialNumber, &kPSNOfSystemProcess, 
                                                sizeof(kPSNOfSystemProcess), &targetDesc);
    
        if (error != noErr)
        {
            return(error);
        }
    
        error = AECreateAppleEvent(kCoreEventClass, EventToSend, &targetDesc, 
                       kAutoGenerateReturnID, kAnyTransactionID, &appleEventToSend);
    
        AEDisposeDesc(&targetDesc);
        if (error != noErr)
        {
            return(error);
        }
    
        error = AESend(&appleEventToSend, &eventReply, kAENoReply, 
                      kAENormalPriority, kAEDefaultTimeout, NULL, NULL);
    
        AEDisposeDesc(&appleEventToSend);
        if (error != noErr)
        {
            return(error);
        }
    
        AEDisposeDesc(&eventReply);
    
        return(error); 
    }
    

    More detail on https://developer.apple.com/library/content/qa/qa1134/_index.html

提交回复
热议问题