是否有红宝石宝石可以实现跨平台鼠标操作?

时间:2011-09-26 16:40:37

标签: ruby automation

我需要能够以编程方式触发特定坐标处的鼠标点击。我发现AutoIt和auto_click gem都可以提供这种能力,但仅限于Windows。我还发现了rautomation gem,它旨在提供跨平台功能,但目前似乎不支持除Windows以外的任何功能。

还有其他任何宝石允许直接从Ruby自动点击特定x / y坐标吗?

2 个答案:

答案 0 :(得分:2)

我认为这是一项严重依赖系统的任务。您应该为代码提供一种加载系统相关宝石的方法(Win上的AutoIt,Linux上的Automations)。如果您的目标是Mac OS,则可以通过FFI库从CGPostMouseEvent调用CGRemoteOperation.h来构建自己的lib。

例如:

要求'ffi'

module Mouse
  extend FFI::Library
  ffi_lib '/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics'

  class CGPoint < FFI::Struct
    layout :x, :double, :y, :double 
  end

  attach_function :CGPostMouseEvent, [ CGPoint, :bool, :int, :bool ], :void
end

point = Mouse::CGPoint.new
point[:x] = 100
point[:y] = 100

Mouse::CGPostMouseEvent(point, true, 1, true)

答案 1 :(得分:1)

看一下rumouse gem。它提供简单的API并支持linux,osx和windows。