我通过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脚本中呢?
答案 0 :(得分:1)
MsgBox()在AutoItX中不可用,但您可以直接从Ruby调用MessageBox函数。
MessageBox API文档:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx