gpt4 book ai didi

objective-c - 如何确定特定 NSScreen 上是否正在运行全屏应用程序

转载 作者:太空狗 更新时间:2023-10-30 03:54:43 24 4
gpt4 key购买 nike

在 Cocoa/AppKit 中,给定一个来自 [NSScreen screens] 的屏幕,我如何才能知道该特定屏幕上是否正在运行全屏应用程序?我最感兴趣的是使用 Cocoa API 进行全屏显示的应用程序,但如果有一个解决方案也包含其他类型的全屏应用程序,那就更好了。该解决方案需要能够通过 Mac App Store 的批准。

我的具体用例涉及菜单栏应用程序 (NSStatusItem) 并确定菜单栏是否显示在 [NSScreen mainScreen] 上,以便允许全局键盘快捷键,用于显示状态项上的弹出窗口定位(如果可见)或 float 窗口(如果没有可见状态项)。

NSScreens 本身似乎没有公开有关窗口/应用程序的任何信息,NSRunningApplication 也没有公开此信息。

是否有 Carbon API 可以解决这个问题?例如,如果我有一个窗口列表,我可以遍历它们并查看是否有任何窗口框架与屏幕框架完全匹配。另一方面,可能有一些应用程序具有类似的框架但在其他应用程序下运行(如背景应用程序,https://itunes.apple.com/us/app/backdrop/id411461952?mt=12),因此像这样的方法需要查看窗口级别。

最佳答案

您可以尝试使用 CGWindowList API,例如 CGWindowListCopyWindowInfo()

如果您只想知道菜单栏是否显示,您应该能够检查 -[NSApplication currentSystemPresentationOptions] 中的 NSApplicationPresentationAutoHideMenuBarNSApplicationPresentationHideMenuBar。该方法还可以告诉您事件应用程序是否处于 Cocoa 全屏模式 (NSApplicationPresentationFullScreen)。

关于objective-c - 如何确定特定 NSScreen 上是否正在运行全屏应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23844148/

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