Я создаю переключатель окон для macOS.
Я использую CGWindowListCopyWindowInfo
, чтобы получить список открытых окон.
let windows = CGWindowListCopyWindowInfo([.excludeDesktopElements], kCGNullWindowID)
Я не являюсьиспользование опции optionOnScreenOnly
вместе с CGWindowListCopyWindowInfo
, поскольку это исключает отключение - пробел окон.
Однако это приводит к тому, что некоторые фиктивные окна также включаются всписок окон. Например, есть окно для каждой открытой вкладки в XCode. Существует также дополнительное невидимое окно для плеера VLC, кроме самого окна. Этих окон нет, если я использую optionOnScreenOnly
.
Есть ли способ отделить эти фиктивные окна от реальных окон?
Я исследовал kCGWindowLayer
и kCGWindowStoreType
ключи в словарях, возвращенных CGWindowListCopyWindowInfo
, но не могли различить окна.
Редактировать :
Я открыт и для Swift, и дляРешения Objective-C, а также частные вызовы API.
Edit 2 :
Я знаю, что это возможно сделать, потому что приложение Witch правильно обрабатывает эти случаи.