func mainWindow() { var ptr: Unmanaged<AnyObject>? let kAXMainWindow: CFString! = "AXMainWindow" as Nsstring let appRef: AXUIElement! = AXUIElementCreateApplication(self.pID()).takeRetainedValue() let err = AXUIElementcopyAttributeValue(appRef,kAXMainWindow,&ptr) if err == AXError(kAXErrorSuccess) { let val: AnyObject? = ptr?.takeRetainedValue() if val != nil { let value: AnyObject = val! let description = CFcopyTypeIDDescription(CfgetTypeID(value)) println("type = \(description)") let element = value as AXUIElement } else { println("got nil result") } }}
完成这项工作的正确方法是什么?
解决方法 此代码适用于XCode 6.1和Swift 1.1.然而,现在是3年后,Swift已经变得更好了.当您搜索如何使用Swift的Accessibility API时,这仍然是最佳结果.所以我回来用我目前最简单的方式更新:
func AXUIWindowArray(processIDentifIEr pID:pID_t) -> [AXUIElement] { var result = [AXUIElement]() var windowList: AnyObject? = nil // [AXUIElement] let appRef = AXUIElementCreateApplication(pID) if AXUIElementcopyAttributeValue(appRef,"AXwindows" as CFString,&windowList) == .success { result = windowList as! [AXUIElement] } return result}总结
以上是内存溢出为你收集整理的如何在Swift中从CFTypeRef转换为AXUIElement全部内容,希望文章能够帮你解决如何在Swift中从CFTypeRef转换为AXUIElement所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)