是否可以以编程方式隐藏停靠图标

Uni*_*orn 4 macos cocoa user-agent nib

是否可以按需编程隐藏停靠图标.我知道在plist中定义属性"Application is agent(UIElement)"的一种方法我们将cocoa应用程序作为用户代理.但这会导致永久隐藏停靠图标.

我正在寻找一种方法,我可以控制停靠图标的可见性.任何的想法 ?

Rob*_*ger 5

不幸的是.您可以使用该TransformProcessType()功能将仅限背景的应用程序转换为前台应用程序,但不能从前台应用程序转换为后台应用程序.

以下是从背景到前景的方法:

ProcessSerialNumber psn = { 0, kCurrentProcess }; 
OSStatus returnCode = TransformProcessType(&psn, kProcessTransformToForegroundApplication);
if( returnCode != 0) {
    NSLog(@"Could not bring the application to front. Error %d", returnCode);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

有可能的。但是,它也隐藏了菜单。

NSApplication.shared.setActivationPolicy(.accessory)
DispatchQueue.main.async {
    NSApplication.shared.activate(ignoringOtherApps: true)
    NSApplication.shared.windows.first!.makeKeyAndOrderFront(self)
}
Run Code Online (Sandbox Code Playgroud)

然后回来:

NSApplication.shared.setActivationPolicy(.regular)
Run Code Online (Sandbox Code Playgroud)