9

Ruby 是否有操作系统中立的方式将键盘和鼠标事件发送到底层操作系统?

一种明显的(对我而言)方法是使用 Ruby/Java 绑定并使用 java.awt.Robot,但这似乎很愚蠢。

4

3 回答 3

7

对于 Mac:

gem install rb-appscript

然后您可以使用如下脚本对其进行测试:

require "rubygems"
require "appscript"
include Appscript

app("TextEdit").activate
app("System Events").keystroke("Look Ma, keystrokes!")

对于 Windows:(未经测试,从这个线程借来的

require "win32ole"

wsh = WIN32OLE.new("WScript.Shell")
wsh.Run("Notepad.exe")
while not wsh.AppActivate("Notepad")
  sleep .1
end
wsh.SendKeys("Look Ma, keystrokes!")
于 2009-09-18T20:16:18.740 回答
5

为了完整起见,我想如果您使用 Linux,我会提供一个解决方案。

在 Linux 上,为了自动击键,您可以使用 xdotool。还有一个用于 Ruby 的 gem,但考虑到发送击键很简单,它并不是真正需要的:

%x(xdotool key super+w) #this would press the keys super and w simultaneoulsy

还有鼠标事件。

于 2013-06-04T11:03:37.487 回答
0

不幸的是,rb-applescript有点过时和不稳定。

对于 mac,您可能需要使用:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')
于 2014-09-05T15:07:41.633 回答