gpt4 book ai didi

macos - 强制 LSUIElement "Accessory"应用程序到前面

转载 作者:行者123 更新时间:2023-12-03 16:43:15 25 4
gpt4 key购买 nike

我有一个 LSUIElement 应用程序,需要保持其作为 LSUIElement 的状态(它不能有停靠图标),该应用程序由插件启动和处理。

当我更改应用程序使其成为“常规”应用程序(没有 LSUIElement)时,[NSApp activateIgnoringOtherApps:YES] 工作正常。然而,当我将其设为 LSUIElement 时,它会显示窗口,但窗口卡在 safari(插件运行的位置)后面,但位于其他所有内容之上。我正在调用 -[NSWindow makeKeyAndOrderFront:self]; 但这没有任何区别。

需要明确的是,“插件”方面是无关紧要的,因为插件和应用程序是两个独立的进程。该插件向应用程序发送一个事件(通过 mach 端口),该应用程序调用一些代码来打开窗口并使其聚焦。问题是使其聚焦的代码仅在它不是 LSUIElement 应用程序时才有效。

我已经详尽地搜索了现有的调用来完成这项工作,我愿意接受有关如何伪造鼠标点击的建议,甚至运行一些苹果脚本来完成这项工作,也许有一种未记录的方法可以做到这一点。

LSUIElement 的 Apple 文档指出“应用程序不会出现在 Dock 中,也没有菜单栏,但可以通过编程方式激活”,但我找不到实现此功能的魔力。

最佳答案

您需要先激活您的应用程序:

[NSApp activateIgnoringOtherApps:YES];

然后让你的窗口成为关键窗口:

[NSWindow makeKeyAndOrderFront:nil];

这适用于我的项目。

关于macos - 强制 LSUIElement "Accessory"应用程序到前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11160180/

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