cocoa - UpdateSystemActivity 在 Cocoa 中相当于什么?

标签 cocoa macos power-management

我正在将 Carbon 应用程序转换为 Cocoa 应用程序,但找不到与 Cocoa 等效的应用程序:

UpdateSystemActivity(UsrActivity);

有 Mac 用户愿意为我指出正确的方向吗?谢谢。

更新:我正在构建 64 位。构建 32 位工作正常,但当我构建 64 位时,我收到 UpdateSystemActivity(和其他)的符号未在此范围内声明的错误。

更新2:我正在导入以下内容:

#import <Cocoa/Cocoa.h>
#import <Carbon/Carbon.h>
#import <OpenGL/CGLMacro.h>

构建 64 位时还需要导入其他内容吗?

更新3:添加#import <CoreServices/CoreServices.h>没有帮助。我仍然收到编译器错误,告诉我 UpdateSystemActivity 和 UsrActivity 未在此范围内声明。

UPDATE4:好的,在 OSServices/Power.h 上找不到文件。我正在针对 10.5 SDK 进行构建,快速搜索显示:

$ pwd
/Developer/SDKs
$ find . -name Power.h
./MacOSX10.3.9.sdk/Developer/Headers/CFMCarbon/OSServices/Power.h
./MacOSX10.3.9.sdk/Developer/Headers/CFMCarbon/Power.h
./MacOSX10.3.9.sdk/Developer/Headers/FlatCarbon/Power.h
./MacOSX10.3.9.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/Headers/Power.h

./MacOSX10.4u.sdk/Developer/Headers/CFMCarbon/OSServices/Power.h
./MacOSX10.4u.sdk/Developer/Headers/CFMCarbon/Power.h
./MacOSX10.4u.sdk/Developer/Headers/FlatCarbon/Power.h
./MacOSX10.4u.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/Headers/Power.h

./MacOSX10.5.sdk/Developer/Headers/FlatCarbon/Power.h
./MacOSX10.5.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/Headers/Power.h

但我得到:

Mac.mm:6:29: error: OSServices/Power.h: No such file or directory
Mac.mm:6:29: error: OSServices/Power.h: No such file or directory

最佳答案

在 OS X 10.6 及更高版本中,IOKit 可用于禁用 sleep 。当您想要禁用 sleep 时创建 IOPMAssertion,并在想要再次允许 sleep 时销毁它。

#import <IOKit/pwr_mgt/IOPMLib.h>

// kIOPMAssertionTypeNoDisplaySleep prevents display sleep,
// kIOPMAssertionTypeNoIdleSleep prevents idle sleep
// reasonForActivity is a descriptive string why sleep is disabled

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.
}

更多信息:https://developer.apple.com/library/mac/qa/qa1340/_index.html

关于cocoa - UpdateSystemActivity 在 Cocoa 中相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324814/

相关文章:

objective-c - 带有 mask 的 NSVisualEffectView 有锯齿状的角

objective-c - Mac系统状态栏焦点

iphone - 将现有数据导入核心数据

java - Android状态栏中的动画

ios - 使用 CoreLocation 重要位置监控和 CoreBluetooth 时的电池消耗

android - 地理位置跟踪和 Google Cloud Messaging 协同工作

iphone - 我是否在 iPhone 上释放这个实例变量?

python - 添加 Python 应用程序以接受传入的网络连接

在 OSX 上创建子进程并将子进程的标准输入和标准输出重定向到父进程?

postgresql - 任何人都成功地使用 PostgreSQL 数据库的特定语言环境,以便文本比较不区分大小写?