gpt4 book ai didi

macos - 将 LSUIElement 转换为前台应用程序

转载 作者:行者123 更新时间:2023-12-03 17:13:55 27 4
gpt4 key购买 nike

我有一个必须始终运行的应用程序(如果用户同意这一点)。

当用户退出应用程序时,我将前台应用程序转换为 LSUIElement(该应用程序只有一个菜单栏图标,停靠栏图标和菜单消失)。

我在菜单项中有一个选项可以正常工作并将 LSUIElement 转换为前台应用程序(我使用函数 [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular][NSApp activateIgnoringOtherApps:YES] )。

当用户双击应用程序时出现我的问题。我再次在委托(delegate)方法 applicationWillUnhide:(NSNotification *)notification 中使用 [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular] ,除了不出现的菜单之外,所有功能都运行良好。如果我转到另一个应用程序,然后我回来,菜单就会出现。我尝试了不同的方法,但找不到好的方法。

我想知道当用户双击应用程序时调用的委托(delegate)方法,或者在那一刻调用的 NSApplication 中的函数是什么,因为我认为使用 setActivationPolicy:applicationWillUnhide 函数中已经晚了。

最佳答案

为了将普通应用程序转换为 LSUIElement,我使用

ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToUIElementApplication);

并将其更改回前台:

ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToForegroundApplication);

关于macos - 将 LSUIElement 转换为前台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com