我正在将 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/