搜索 CoreDockPreferences,我發現這些私有系統 APIs coredock.h
我正在嘗試使用 CoreDockSetPreferences 更改 Minimize To App 的值,但它不起作用
下面是我在 Obj-c 中的介面和實作:
@interface Symbolic : NSObject
extern void CoreDockSetPreferences(CFDictionaryRef preferenceDict);
- (void) setDictionaryDock: (CFDictionaryRef)dockDict;
@end
@implementation Symbolic
-(void) setDictionaryDock: (CFDictionaryRef)dockDict
{
CoreDockSetPreferences(dockDict);
}
這是我在 Swift 中呼叫和傳遞dock.plist Dictionary Changed 的??方法:
func dockPrefChange(){
if let dir = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask).first {
let dockPlistPath = dir.appendingPathComponent("Preferences", isDirectory: true).appendingPathComponent("com.apple.dock.plist", isDirectory: false)
guard let dockDictionary = NSMutableDictionary(contentsOf: dockPlistPath) else {return}
dockDictionary["minimize-to-application"] = 1
Symbolic().setDictionaryDock(dockDictionary as CFDictionary)
}
}
uj5u.com熱心網友回復:
感謝Willeke你說得對。
DockDict 不是應該的。閱讀更多關于,我回答這個問題。
基本上我遵循在 coredock.h 中找到的注釋“序列用法”
// Example usage
/*
CFArrayRef d = CFStringCreateArrayBySeparatingStrings(kCFAllocatorDefault, CFSTR("showRecents,showProcessIndicators,minimizeToApplication"), CFSTR(","));
CFDictionaryRef dic;
CoreDockCopyPreferences(d, &dic, nil);
*/
并重新創建如下代碼:
@implementation Symbolic
- (NSDictionary*) getDictionaryDock
{
CFArrayRef d = CFStringCreateArrayBySeparatingStrings(kCFAllocatorDefault, CFSTR("showRecents,showProcessIndicators,minimizeToApplication"), CFSTR(","));
CFDictionaryRef dic;
CoreDockCopyPreferences(d, &dic, nil);
NSDictionary *nsDictionary = (__bridge NSDictionary*)dic;
return nsDictionary;
}
- (void) setDictionaryDock: (NSDictionary*) newDictionary
{
CFDictionaryRef dict = (__bridge CFDictionaryRef)newDictionary;
CoreDockSetPreferences(dict);
}
在 Swift 中:
public func setMinimizeToApp(value: Bool){
if var dict = symbolic.getDictionaryDock() as? [String: Bool] {
if dict["minimizeToApplication"] != value{
dict["minimizeToApplication"] = value
symbolic.setDictionaryDock(dict)
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/333945.html
