【问题标题】:How to get window id from the title by swift3如何通过swift3从标题中获取窗口ID
【发布时间】:2017-11-07 20:16:13
【问题描述】:

如何从标题中获得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 或任何信息以按标题指定窗口?

【问题讨论】:

    标签: swift3 macos-sierra


    【解决方案1】:

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

    代码如下:

    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
    }
    

    通过上述功能,我可以获取窗口的详细信息,例如名称。

    我希望它也对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-07
      • 2012-04-16
      • 2012-03-30
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      相关资源
      最近更新 更多