【发布时间】:2014-05-27 18:47:42
【问题描述】:
我正在编写一个“UIElement”应用程序,它在屏幕一侧显示一个状态窗口,类似于 Dock。
现在,当一个程序占据整个屏幕时,我需要隐藏我的状态窗口,就像 Dock 一样。
我有什么选择来检测这个和相反的事件?
我喜欢避免通过定时事件进行轮询,也不能使用未记录的技巧(例如建议的here)
什么不起作用:
为
kEventAppSystemUIModeChanged事件注册一个 Carbon 事件处理程序是不够的 - 它可以检测 VLC 的全屏模式,但不适用于在其右上角使用新的全屏小部件的现代 Cocoa 应用程序窗户。
1234563小部件。
使用
CGDisplayRegisterReconfigurationCallback监控屏幕配置的更改不起作用,因为这些全屏模式没有任何回调。
【问题讨论】:
-
这是一个有趣的问题。我有一个基于grabbing the onscreen window list 的想法,并在 NSWorkspace 的活动空间更改通知触发时检查桌面是否存在,但我现在没有时间测试它。如果您喜欢冒险,并且在我回到它之前没有其他人提出更好的东西,请随意将其用作起点。
-
你窗口的
collectionBehavior是什么?我认为省略NSWindowCollectionBehaviorFullScreenAuxiliary意味着您的窗口会自动隐藏在全屏空间中。 -
@KenThomases - 我想观察的不是我自己的应用程序,而是其他应用程序。我的应用是纯后台应用。
-
你说你有一个状态窗口,所以你的应用程序不是后台的。 (UIElement 与仅背景不同。)我在询问该状态窗口的
collectionBehavior。
标签: macos