如何将外部au3(AutoIt)文件包含在Ruby中?

时间:2016-12-22 03:37:21

标签: ruby include pixel autoit win32ole

我通过Ruby WIN32OLE调用AutoItX在Windows中进行一些自动化,遇到了我必须从屏幕获取像素颜色并在msg框中显示颜色的情况。 Autoit没有内置的msgbox方法,因此必须通过包含外部文件来完成。

这在Autoit中工作正常,如下所示:

#include <MsgBoxConstants.au3>

Local $iColor = PixelGetColor(10, 100)

MsgBox($MB_SYSTEMMODAL, "", "The decimal color is: " & $iColor)
MsgBox($MB_SYSTEMMODAL, "", "The hex color is: " & Hex($iColor, 6))

由于我从Ruby调用AutoItX方法,因此不能以与上面相同的方式包含它。

这是我用于打开Android模拟器的ruby脚本。我打算使用像素搜索/图像搜索来识别应用并发送鼠标点击以与它们进行交互。

require 'win32ole'

# create autoit object from win32ole
puts 'Creating oAutoIt Object...'
oAutoIt = WIN32OLE.new("AutoItX3.Control")

# open MEmu
puts 'Opening MEmu'
MEmu_pid = oAutoIt.Run "C:/Program Files/Microvirt/MEmu/MEmu.exe", "", oAutoIt.SW_SHOWNORMAL
#MEmu_pid = oAutoIt.RunWait "C:/Program Files/Microvirt/MEmu/MEmu.exe", "", oAutoIt.SW_SHOWNORMAL # => pauses the script waits for MEmu to finish.
puts "MEmu is running | PID #{MEmu_pid}"

我需要做的是将外部AutoIt函数包含在当前脚本中。 我想以标准方式进行(计划稍后进行扩展)。那么如何将au3文件包含在我的ruby脚本中呢?

1 个答案:

答案 0 :(得分:1)

MsgBox()在AutoItX中不可用,但您可以直接从Ruby调用MessageBox函数。

MessageBox API文档:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx