i_a*_*orf 5 macos cocoa power-management
我正在将Carbon应用程序转换为Cocoa应用程序,但找不到以下产品的Cocoa等效项:
UpdateSystemActivity(UsrActivity);
Run Code Online (Sandbox Code Playgroud)
那里的Mac人士是否愿意为我指明正确的方向?谢谢。
更新:我正在构建64位。构建32bit可以正常工作,但是当我针对64bit进行构建时,在此范围内,UpdateSystemActivity(及其他)未声明符号错误。
UPDATE2:我要导入以下内容:
#import <Cocoa/Cocoa.h>
#import <Carbon/Carbon.h>
#import <OpenGL/CGLMacro.h>
Run Code Online (Sandbox Code Playgroud)
构建64bit时是否还需要导入其他内容?
UPDATE3:添加#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
Run Code Online (Sandbox Code Playgroud)
但是我得到:
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
Run Code Online (Sandbox Code Playgroud)
在 OS X 10.6 及更高版本中,IOKit 可用于禁用睡眠。当您想禁用睡眠时创建一个 IOPMAssertion 并在您想再次允许睡眠时销毁它。
#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.
}
Run Code Online (Sandbox Code Playgroud)
更多信息:https : //developer.apple.com/library/mac/qa/qa1340/_index.html
您应该仍然可以UpdateSystemActivity
从 Cocoa 应用程序中进行调用——它尚未被标记为已弃用。
API 的文档指定了通过CoreServices/CoreServices.h
导入来获取 API —— 然而,通过头文件(特别是在OSServices/OSServices.h
)中搜索发现该文件在 64 位环境中被省略。Power.h
然而, (其中定义的)的某些部分UpdateSystemActivity
对于 64 位是关闭的,并且UpdateSystemActivity
不是其中之一。
鉴于此,请尝试#import <OSServices/Power.h>
直接查看是否有效。(您必须在项目中包含 CoreServices 框架才能找到标头。)
归档时间: |
|
查看次数: |
2985 次 |
最近记录: |