objective-c – 如何关闭Mac屏幕保护程序?
发布时间:2020-12-16 09:28:15 所属栏目:百科 来源:网络整理
导读:我正在编写一个使用Apple的kiosk模式的应用程序.我想禁用屏幕保护程序,但“ScreenSaverDefaults”类报告自己只是32位.我可以将构建更改为仅32位,但我希望能够支持64位体系结构. 我是否应该使用其他任何框架来禁用屏幕保护程序? 解决方法 首先,您需要保存当
我正在编写一个使用Apple的kiosk模式的应用程序.我想禁用屏幕保护程序,但“ScreenSaverDefaults”类报告自己只是32位.我可以将构建更改为仅32位,但我希望能够支持64位体系结构.
我是否应该使用其他任何框架来禁用屏幕保护程序? 解决方法
首先,您需要保存当前设置,以便在关闭它之前将其恢复原样:
NSTask *readTask = [[NSTask alloc] init]; [readTask setLaunchPath:@"/usr/bin/defaults"]; NSArray *arguments = [NSArray arrayWithObjects:@"-currentHost",@"read",@"com.apple.screensaver",@"idleTime",nil]; [readTask setArguments:arguments]; NSPipe *pipe = [NSPipe pipe]; [readTask setStandardOutput:pipe]; NSFileHandle *file = [pipe fileHandleForReading]; [readTask launch]; [readTask release]; NSData *data = [file readDataToEndOfFile]; NSString *originalValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 所以现在你有了屏幕保护程序的idleTime的原始值.大!不要失去那个.现在,您必须设置新值: NSTask *writeTask = [[NSTask alloc] init]; [writeTask setLaunchPath:@"/usr/bin/defaults"]; NSArray *arguments = [NSArray arrayWithObjects:@"-currentHost",@"write",@"0",nil]; [writeTask setArguments:arguments]; [writeTask launch]; [writeTask release]; 而且中提琴!你刚刚禁用了屏幕保护程序.要重新启用它,只需再次使用第二个代码块,但将originalValue作为最后一个数组对象传递而不是@“0”,如下所示: NSArray *arguments = [NSArray arrayWithObjects:@"-currentHost",originalValue,nil] 请享用! P.S.:最后一件事,您可能想要保存NSTask对象以重复使用它们,但事实并非如此.它们只能运行一次,因此每次要执行此操作时都必须创建新的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |