2011-09-26 76 views
4

我需要能够以编程方式在特定坐标处触发鼠标点击。我发现AutoIt和auto_click gem都可以提供这种功能,但只能在Windows上使用。我还发现了旨在提供跨平台功能的rautomation gem,但目前似乎并未支持Windows以外的任何其他功能。有没有可以实现跨平台鼠标操作的红宝石宝石?

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

+0

也许这可以帮助你https://github.com/Quintus/Automations/ – derp

回答

2

我认为这是一个高度依赖系统的任务。您应该提供代码来加载系统相关的gem(AutoIt on Win,Linux上的自动化)。如果您的目标是Mac OS,则可以通过FFI库从CGRemoteOperation.h调用CGPostMouseEvent来构建自己的库。

例如:

需要 '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) 
+0

伟大的东西,谢谢。 – lottscarson

1

rumouse宝石看看。它提供了简单的API并支持linux,osx和windows。