У меня есть NSWindow
, что я хотел бы иметь его перед всем (каждое приложение компьютера, полноэкранные приложения и т. Д.). Даже если я нажму в фоновом приложении, то не удастся перейти на задний план. И NSWindow
должен следовать экрану пользователя, если, например, пользователь переключает рабочий стол на рабочий стол2 и так далее ... Как я могу это сделать?
Спасибо!Как заставить NSWindow быть перед каждым приложением? Даже полноэкранные приложения
ответ
Если вам не нужно быть видимым с полноэкранными окнами других приложений, это не так сложно.
Прежде всего, чтобы оставаться перед всем остальным, просто установите уровень: с помощью NSFloatingWindowLevel или выше. Поэкспериментируйте с различными значениями, чтобы увидеть, что кажется соответствующим вашим потребностям.
Далее, чтобы оставаться впереди, даже если пользователь меняет пробелы, возможно, включая Exposé/Mission Control, setCollectionBehavior: с соответствующей парой флагов или использовать соответствующие параметры Spaces и Exposé в инспекторе атрибутов, если вы создаете окно в банке. Либо может присоединиться ко всем пространствам, либо перейти в активное пространство, убедитесь, что вы остаетесь видимыми на каждом пространстве несколькими способами. Вероятно, вам захочется, чтобы Exposé установлен на «Стационарный», или, возможно, на переходный период. Опять же, попробуйте в обоих направлениях и посмотрите.
Однако, если пользователь переключится на полноэкранное пространство или на панель мониторинга или панель запуска, Lion скроет как все пробелы, так и окна перехода в активное пространство. И если вы посмотрите, вы увидите, что он делает это по-разному для каждого из трех случаев. И этот Snow Leopard делает что-то по-другому, так же как и Горный Лев.
Если вы хотите решить эту последнюю проблему, вам нужно немного хакеров и разных форм хакерства для каждого случая и для каждой версии ОС. Основной трюк заключается в том, чтобы поймать связанные с шпионами уведомления и показать себя в соответствующее время.
Вы должны изменить свой info.plist и установить для приложения «Агент» значение «ДА». Окно агента может отображаться перед полноэкранными окнами.
- 1. Как заставить NSWindow быть всегда активным/сфокусированным?
- 2. Запуск приложения перед целевым приложением
- 3. Reupload binary перед приложением приложения
- 4. HTML5 полноэкранные мобильные приложения
- 5. Рельсы возвращаются перед каждым вызовом метода перед каждым статическим методом
- 6. nswindow не может быть центрирован
- 7. Установка Положение NSWindow перед отображением
- 8. Заставить Eclipse автоматически очищать проект перед каждым запуском
- 9. Опираясь на полноэкранные приложения в Java
- 10. Заставить NSWindow оставаться активным, как NSAlert
- 11. Окно, видимое во всех пространствах (включая другие полноэкранные приложения)
- 12. Как сделать NSWindow перед другими приложениями?
- 13. WPF: Как заставить владельца формы быть вызывающим приложением?
- 14. Как сделать окно поверх всего (даже полноэкранные игры!) C++/Qt
- 15. Полноэкранные редакторы?
- 16. Как добавить текст перед каждым элементом массива?
- 17. Дженкинс - проверить Git перед каждым строят
- 18. HTML5 Полноэкранные веб-приложения: нет баров-браузеров
- 19. Полноэкранные приложения Visual Studio с C#
- 20. hook for перед каждым сценарием
- 21. «перед каждым» крюк: workFn ошибки
- 22. Перед каждым подэлементом в MenuStrip
- 23. Установите переменную перед каждым контроллером
- 24. Вызов метода перед каждым методом
- 25. sparkjobserver добавляет [перед каждым {и [
- 26. Grails - как выполнить код перед каждым сохранением?
- 27. Как вызвать дополнительный SQL перед каждым запросом?
- 28. как избежать вызова free() перед каждым «возвратом»
- 29. Как вызывать my_function перед каждым вызовом sprintf?
- 30. Как добавить '.' перед каждым согласным в строке?
Большое вам спасибо! Я установил уровень NSFloatingWindowLevel, Spaces: Can Join All Spaces и Exposé: Transient Behavior и работает так, как я хотел! NSWindow следит за мной повсюду. Спасибо! –
Последняя мысль: может быть более целесообразно использовать NSPanel вместо NSWindow (и, возможно, использовать setFloatingPanel: YES вместо setLevel: NSFloatingWindowLevel). – abarnert