IOCancelPowerChange
tiếp tục hoạt động nhưng chỉ cho chế độ nghỉ được kích hoạt không hoạt động; nó sẽ không hoạt động cho giấc ngủ được kích hoạt bởi mục trình đơn Ngủ của Người tìm kiếm, được yêu cầu theo lập trình hoặc từ một nút bấm nguồn.
Apple Q&A1340 trả lời câu hỏi "H: Làm cách nào để ứng dụng của tôi được thông báo khi máy tính chuyển sang chế độ ngủ hoặc thức giấc? Làm cách nào để ngăn chặn giấc ngủ?"
Liệt kê 2 của Q&A1340:
#import <IOKit/pwr_mgt/IOPMLib.h>
// kIOPMAssertionTypeNoDisplaySleep prevents display sleep,
// kIOPMAssertionTypeNoIdleSleep prevents idle sleep
//reasonForActivity is a descriptive string used by the system whenever it needs
// to tell the user why the system is not sleeping. For example,
// "Mail Compacting Mailboxes" would be a useful string.
// NOTE: IOPMAssertionCreateWithName limits the string to 128 characters.
CFStringRef* reasonForActivity= CFSTR("Describe Activity Type");
IOPMAssertionID assertionID;
IOReturn success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep,
kIOPMAssertionLevelOn, reasonForActivity, &assertionID);
if (success == kIOReturnSuccess)
{
//Add the work you need to do without
// the system sleeping here.
success = IOPMAssertionRelease(assertionID);
//The system will be able to sleep again.
}
Lưu ý rằng bạn chỉ có thể dừng lại nhàn rỗi thời gian ngủ, không ngủ gây ra bởi người sử dụng.
Đối với các ứng dụng hỗ trợ Mac OS X 10.6 trở lên, hãy sử dụng mới IOPMAssertion họat động chức năng. Các chức năng này cho phép các ứng dụng và tiện ích khác thấy được mong muốn của ứng dụng không ngủ; điều này rất quan trọng để làm việc liên tục với phần mềm quản lý năng lượng của bên thứ ba.
Nguồn
2011-12-11 00:57:14
Có [Apple Q & A mới] (http://developer.apple.com/library/mac/#qa/qa1340/_index.html) về vấn đề này. –
@Michael: Và tôi cũng muốn làm như vậy. Có cách nào tôi có thể sửa đổi câu hỏi không? – orome
Đăng một tiền thưởng sẽ tăng khả năng hiển thị của câu hỏi đó và có thể nhắc thêm câu trả lời. Nhấp vào liên kết 'bắt đầu một bounty' trên câu hỏi đó và cung cấp hộp thoại kết quả với các lý do của bạn để muốn có câu trả lời hiện tại hơn. Thêm nhận xét nếu bạn muốn cung cấp thêm chi tiết. –