2017-11-07 1 views
4

Wie bekomme ich eine CGWindowID aus dem Titel davon?Wie bekomme ich eine Fenster ID aus dem Titel von swift3

Ich dachte, ich Liste des Titels von diesem Code

bekomme
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

Aber es scheint, gibt es keine Informationen für den Titel des Fensters ist.

Wie kann ich CGWindowID oder irgendwelche Informationen erhalten, um ein Fenster nach Titel anzugeben?

Antwort

2

Eigentlich scheint das Code-Snippet, das Sie gepostet haben, für mich zu arbeiten. Alles, was ich getan habe, war, über das Wörterbuch zu iterieren und die Fensterinformationen für einen bestimmten Fenstertitel zu finden.

Hier ist der Code:

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 
} 

Mit der obigen Funktion, ich bin in der Lage ein Fensters Details zu erhalten, zum Beispiel mit Namen.

Ich hoffe, es funktioniert auch für Sie.