Mac OS 中 AXUIElementCopyAttributeValue 的展开问题
Unwrapping issue with AXUIElementCopyAttributeValue in Mac OS
我正在尝试复制有关辅助功能 window 选项的一些信息。不幸的是,我无法解决由 AXUIElementCopyAttributeValue 方法引起的错误,尽管传入的参数类型似乎都是正确的。
代码:
for entry in windowList! as Array {
let ownerName: String = entry.object(forKey: kCGWindowName) as? String ?? "N/A"
let ownerPID: Int = entry.object(forKey: kCGWindowOwnerPID) as? Int ?? 0
let pid = Int32(ownerPID)
//3. Get AXUIElement using PID
let windowAccessibilityElem : AXUIElement = AXUIElementCreateApplication(pid)
print(windowAccessibilityElem)
var position : CFTypeRef? = nil
/****
* This line throws the error
****/
let res : AXError = AXUIElementCopyAttributeValue(windowAccessibilityElem, kAXPositionAttribute as CFString, position as! UnsafeMutablePointer<CFTypeRef?>)
print("res is: \(res)")
...
我是 Swift 的新手,但我已经阅读并重新阅读了有关可选值的文档,但确实不清楚传入的是什么意外值 - 我认为必须这样做使用位置变量,但据我所知,我应该正确传递引用。如有任何帮助,我们将不胜感激。
您必须使用 in-out 运算符 &
将指针分配给变量
var position : CFTypeRef?
let res : AXError = AXUIElementCopyAttributeValue(windowAccessibilityElem,
kAXPositionAttribute as CFString,
&position)
res
包含失败时的错误。
position
包含成功的位置。
在 documentation 中,输入输出参数由 在 return 中指示,...
我正在尝试复制有关辅助功能 window 选项的一些信息。不幸的是,我无法解决由 AXUIElementCopyAttributeValue 方法引起的错误,尽管传入的参数类型似乎都是正确的。
代码:
for entry in windowList! as Array {
let ownerName: String = entry.object(forKey: kCGWindowName) as? String ?? "N/A"
let ownerPID: Int = entry.object(forKey: kCGWindowOwnerPID) as? Int ?? 0
let pid = Int32(ownerPID)
//3. Get AXUIElement using PID
let windowAccessibilityElem : AXUIElement = AXUIElementCreateApplication(pid)
print(windowAccessibilityElem)
var position : CFTypeRef? = nil
/****
* This line throws the error
****/
let res : AXError = AXUIElementCopyAttributeValue(windowAccessibilityElem, kAXPositionAttribute as CFString, position as! UnsafeMutablePointer<CFTypeRef?>)
print("res is: \(res)")
...
我是 Swift 的新手,但我已经阅读并重新阅读了有关可选值的文档,但确实不清楚传入的是什么意外值 - 我认为必须这样做使用位置变量,但据我所知,我应该正确传递引用。如有任何帮助,我们将不胜感激。
您必须使用 in-out 运算符 &
var position : CFTypeRef?
let res : AXError = AXUIElementCopyAttributeValue(windowAccessibilityElem,
kAXPositionAttribute as CFString,
&position)
res
包含失败时的错误。position
包含成功的位置。
在 documentation 中,输入输出参数由 在 return 中指示,...