2011-05-12 75 views
2

我是Cocoa/macOS编程新手。我刚刚发现可以使用NSUserDefaults来更改应用程序/系统设置,就像defaults命令那样。如何以编程方式更改Dock偏好设置?

但我不知道如何导致这些设置更新。

例如,我使用NSUserDefaults将扩展坞大小设置为32,并同步设置。但码头保留了旧的设置。

即使当我使用defaults write com.apple.dock tilesize 32更改其大小时,它将不会更新,直到我注销并登录。

是否有任何其他技术通知码头获取更新?我知道系统首选项可以做到这一点。

谢谢!

回答

3

Mac OS X扩展坞在其被终止并重新启动之前不会重新加载其设置。与您必须通过终端(defaults write com.apple.dock tilesize 32; killall Dock)手动更改设置的方式相同,您必须使用代码执行此操作。所以,当你写的代码defaults部分,你必须写kill部分:

NSRunningApplication *dock = [NSRunningApplication runningApplicationWithBundleIdentifier:@"com.apple.dock"]; 
[dock terminate]; 

如果你想这样做,而不杀死码头,很抱歉,但你的运气了。虽然可能有一个隐藏的API来迫使码头在运行中重新加载其设置,但是在我所有的搜索中,我从未发现任何提示可以做到这一点(在隐藏的分布式通知中心没有发布通知,大多数应用程序互相交流)。

+0

谢谢!这是我想要的。 –

0

您可以使用AppleScript通过编写系统偏好设置脚本来设置停靠栏的某些属性,您可能需要查看是否可以采用该方法吗?也许从你的应用程序调用一些AppleScript?

相关问题