swift 如何访问特定第三方应用程序窗口中的文本框元素?

lbsnaicq  于 5个月前  发布在  Swift
关注(0)|答案(1)|浏览(85)

我的要求是从我的应用程序启动第三方应用程序,并自动将用户名填充到指定的文本框中。目前,我能够启动应用程序,并尝试使用可可框架,但我只能获得窗口信息,而不是里面的元素。我还尝试使用Accessibility API,当我使用Accessibility Inspector分析时,我发现我需要的元素的父角色是Window,但是这个元素没有出现在Window的子角色中。我不知道如何继续。有没有其他方法可以帮助我完成这个任务?
我试过使用可可框架,但只能获取窗口的信息,不知道如何获取里面的元素。我也尝试过使用Accessibility API来检索它们。

ruoxqz4g

ruoxqz4g1#

您可以使用CGEvent并发送事件,例如新的鼠标位置和标记:

编程移动鼠标:

private func moveMouseTo(x: Int, y: Int) {
    let moveEvent = CGEvent(mouseEventSource: nil, mouseType: .mouseMoved, mouseCursorPosition: CGPoint(x: x, y: y), mouseButton: .left)
    moveEvent?.post(tap: .cghidEventTap)
}

字符串

以编程方式发送消息:

let keyDownEvent = CGEvent(keyboardEventSource: nil, virtualKey: rightArrowKeyCode, keyDown: true)
keyDownEvent?.flags = CGEventFlags.maskCommand
keyDownEvent?.post(tap: CGEventTapLocation.cghidEventTap)

let keyUpEvent = CGEvent(keyboardEventSource: nil, virtualKey: rightArrowKeyCode, keyDown: false)
keyUpEvent?.flags = CGEventFlags.maskCommand
keyUpEvent?.post(tap: CGEventTapLocation.cghidEventTap)


请注意,为了使用两个事件(鼠标和键盘),您需要在macOS设置中为您的应用配置“辅助功能”选项,例如**AXIsProcessTrusted**
您还可以使用OCR或机器学习模型,使用XML(用于图像识别)来识别第三方应用程序的正确边界框(特别是文本字段)。
通过这种方式,您可以移动鼠标,并在一个精确的位置比发送鼠标点击。

相关问题