objective-c – 如何关闭Mac屏幕保护程序?

objective-c – 如何关闭Mac屏幕保护程序?,第1张

概述我正在编写一个使用Apple的kiosk模式的应用程序.我想禁用屏幕保护程序,但“ScreenSaverDefaults”类报告自己只是32位.我可以将构建更改为仅32位,但我希望能够支持64位体系结构. 我是否应该使用其他任何框架来禁用屏幕保护程序? 首先,您需要保存当前设置,以便在关闭它之前将其恢复原样: NSTask *readTask = [[NSTask alloc] init];[r 我正在编写一个使用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];NS@R_419_6852@Handle *@R_419_6852@ = [pipe @R_419_6852@HandleForReading];[readTask launch];[readTask release];NSData *data = [@R_419_6852@ readDataToEndOf@R_419_6852@];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对象以重复使用它们,但事实并非如此.它们只能运行一次,因此每次要执行此 *** 作时都必须创建新的.

总结

以上是内存溢出为你收集整理的objective-c – 如何关闭Mac屏幕保护程序?全部内容,希望文章能够帮你解决objective-c – 如何关闭Mac屏幕保护程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1212929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存