是否可以根据需求,以编程方式隐藏dock图标。我知道一种方法,通过在plist中定义 "应用程序是代理(UIElement) "的属性,我们将cocoa应用程序作为用户代理。但是这样做的结果是永久地隐藏dock图标。
我正在寻找一种方法,我可以控制dock图标的可见性。任何想法?
很遗憾不是。你可以使用以下方法将一个只有背景的应用程序转换为前台应用程序 TransformProcessType()
函数,但你不能从前景应用转到背景应用。
下面是如何从背景到前景。
ProcessSerialNumber psn = { 0, kCurrentProcess };
OSStatus returnCode = TransformProcessType(&psn, kProcessTransformToForegroundApplication);
if( returnCode != 0) {
NSLog(@"Could not bring the application to front. Error %d", returnCode);
}
这是可能的. 但是,它也会隐藏菜单。
NSApplication.shared.setActivationPolicy(.accessory)
DispatchQueue.main.async {
NSApplication.shared.activate(ignoringOtherApps: true)
NSApplication.shared.windows.first!.makeKeyAndOrderFront(self)
}
而且还能回来。
NSApplication.shared.setActivationPolicy(.regular)