我怎样才能得到一个 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/