swift3 - 如何通过swift3从标题中获取窗口ID

标签 swift3 macos-sierra

我怎样才能得到一个 CGWindowID从标题呢?

我以为我可以通过此代码获取标题列表

let options = CGWindowListOption(arrayLiteral: CGWindowListOption.excludeDesktopElements, CGWindowListOption.optionOnScreenOnly)
let windowListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0))
let infoList = windowListInfo as NSArray? as? [[String: AnyObject]]

https://stackoverflow.com/a/31367468/1536527

但似乎没有关于窗口标题的信息。

我怎样才能得到CGWindowID或通过标题指定窗口的任何信息?

最佳答案

实际上,您发布的代码片段似乎对我有用。我所做的只是遍历字典并找到给定窗口标题的窗口信息。

这是代码:

func getWindowInfo(pname: String) -> Dictionary<String, AnyObject> {
    var answer = Dictionary<String, AnyObject>()
    let options = CGWindowListOption(arrayLiteral: CGWindowListOption.optionOnScreenOnly)
    let windowListInfo = CGWindowListCopyWindowInfo(options, CGWindowID(0))
    let infoList = windowListInfo as NSArray? as? [[String: AnyObject]]


    infoList?.forEach{eachDict in
        eachDict.keys.forEach{ eachKey in
            if (eachKey == "kCGWindowName" && eachDict[eachKey] != nil ){
                let name = eachDict[eachKey] as? String ?? ""
                print (name)
                if ( name == pname){
                    print("******** Found **********")
                    answer = eachDict as! Dictionary<String, AnyObject>
                }
            }
            print(eachKey , "-->" , eachDict[eachKey])
        }
    }
    return answer
}

使用上述功能,我可以获得窗口的详细信息,例如包括名称。

我希望它也适用于你。

关于swift3 - 如何通过swift3从标题中获取窗口ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47166681/

相关文章:

ios - 当应用程序在 swift 3 中处于前台时,隐藏特定 View Controller 的远程通知

jenkins - Jenkins无法在macOS 10.12(Sierra)上启动

c++ - 如何在 macOS 中使用 CMake 让库找到 Eigen?

objective-c - macOS Swift : How to properly add application as Login Item

swift - Cocoa Swift 中的自定义类 Unarchive 为零

ios - 如何根据按钮框架正确计算 cornerRadius

swift - 如何回放录制的视频?

ios - NumberFormatter 参数标签 '(_:)' 不匹配任何可用的重载

user-interface - 从 Swift 3 迁移到 Swift 4 导航栏界面损坏

eclipse - MacOS - 本地主机上的 Tomcat v7.0 服务器所需的端口 443 已被使用