【问题标题】:Swift 5 - MacOS App - Interacting with other applicationsSwift 5 - MacOS App - 与其他应用程序交互
【发布时间】:2020-09-01 07:50:39
【问题描述】:

我正在尝试制作一个小型机器人,它需要获取屏幕上特定位置的颜色、单击/双击和使用键盘上的字母。

由于我很懒,该机器人只会帮助我节省启动游戏的时间。 例如,我启动机器人(带有一个带有“开始”或类似按钮的小窗口,以及我可以选择我想要的游戏的其他按钮),它双击正确图标的位置,一旦它检测到精确的像素组合,它会点击正确的位置并输入我的登录名/密码并启动游戏。

我的问题是: 是否可以使用 Xcode Swift5 MacOs 应用程序来做到这一点?

感谢您的宝贵时间!

【问题讨论】:

  • 我的问题中有什么你没有得到的吗?我正在尝试提供我的机器人操作的详细信息,以便您更好地了解我在寻找什么。至于代码示例,我有一个采用 MVC 结构的 MacOs 应用程序,但我怀疑这会有所帮助。我被困在我不知道应用程序是否可以在其他应用程序上使用某些鼠标/键盘事件的地步。这意味着我没有任何有用的代码可以分享。
  • 如果那是您的立场,那么 SO 真的不适合您提出问题。 SO 对以“有没有可能……?”开头的问题有特定的结束规则。 “我如何能...?” “告诉我怎么……?”这是关于代码问题的问题。你试过苹果开发板吗?
  • 我明白你的意思,但我怀疑苹果开发板会很有帮助。我看到我的请求更加面向“脚本”。我不知道我是否可以使用带有 Xcode 的 swift 或/和 macos 应用程序编写一些脚本。既然你似乎不想帮助我,我将继续我自己的研究并将我的发现发布在这个线程上..

标签: swift macos bots


【解决方案1】:

有可能。

但这不是最简单的事情,需要大量的设置和时间。

我想你还没有使用过 Swift 或 Xcode,所以我不建议你同时学习这两种方法来完成这么简单的任务。

请查看已安装在您的 Mac 上的应用程序“脚本编辑器”。它可以让你用 Applescript 编写代码(它比代码更具可读性和“类似英语”),并为你提供所需的工具。

这里有一个简单的双击代码:

tell application "System Events"
  click at {10, 10}
  delay 0.1
  click at {10, 10}
end tell

这里按一个键

tell application "System Events"
    delay 0.5
    keystroke space using command down
end tell

顺便说一句,keystroke 也可以用来输入整个单词和句子。

通过快速的谷歌搜索,您还可以获得在给定 x,y 处获取十六进制颜色的代码:

do shell script "screencapture -R{x},{y},1,1 -t bmp $TMPDIR/test.bmp && \
                 xxd -p -l 3 -s 54 $TMPDIR/test.bmp | \
                 sed 's/\\(..\\)\\(..\\)\\(..\\)/\\3\\2\\1/'"

【讨论】:

  • 我用 xcode/swift 工作了 4 年多 ^^ 我真的以为我会找到另一种方法而不是获取屏幕截图来检查像素,但即使在 .net 中我也不得不使用这个技巧。谢谢你的回答!
【解决方案2】:

最后,我选择打开 windows 并使用 .net 和 Visual Studio 2019。这非常简单。

【讨论】:

    猜你喜欢
    • 2012-11-25
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多