tho*_*chs 5 macos cocoa objective-c fullscreen appkit
在Cocoa / AppKit中,从给出一个屏幕[NSScreen screens],我如何确定在该特定屏幕上是否正在运行全屏应用程序?我对使用Cocoa API进行全屏显示的应用程序最感兴趣,但是如果有一种解决方案还包含其他类型的全屏显示应用程序,则更好。该解决方案需要能够通过Mac App Store批准。
我的特定用例涉及一个菜单栏应用程序(NSStatusItem),并弄清楚是否完全显示了菜单栏[NSScreen mainScreen],以便允许全局键盘快捷方式在状态项(如果可见)上显示弹出框的位置,或在其上浮动窗口,如果没有可见的状态项。
NSScreens本身似乎没有公开有关Windows /应用程序的任何信息,NSRunningApplication也没有公开此信息。
也许有Carbon API可以找到答案吗?例如,如果我有一个窗口列表,则可以遍历它们,查看是否有任何窗口框架与屏幕框架完全匹配。另一方面,可能有一些具有类似框架但在其他应用程序下运行的应用程序(例如Backdrop应用程序,https: //itunes.apple.com/us/app/backdrop/id411461952?mt =12),因此这样的方法需要查看窗口级别。
您可以尝试使用 CGWindowList API,例如CGWindowListCopyWindowInfo().
如果你只是想知道,如果菜单栏显示时,你应该能够检查-[NSApplication currentSystemPresentationOptions]的NSApplicationPresentationAutoHideMenuBar或NSApplicationPresentationHideMenuBar。该方法还可以告诉您活动应用程序是否处于 Cocoa 全屏模式 ( NSApplicationPresentationFullScreen)。
| 归档时间: |
|
| 查看次数: |
936 次 |
| 最近记录: |