Ruby 是否有操作系统中立的方式将键盘和鼠标事件发送到底层操作系统?
一种明显的(对我而言)方法是使用 Ruby/Java 绑定并使用 java.awt.Robot,但这似乎很愚蠢。
Ruby 是否有操作系统中立的方式将键盘和鼠标事件发送到底层操作系统?
一种明显的(对我而言)方法是使用 Ruby/Java 绑定并使用 java.awt.Robot,但这似乎很愚蠢。
对于 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!")
为了完整起见,我想如果您使用 Linux,我会提供一个解决方案。
在 Linux 上,为了自动击键,您可以使用 xdotool。还有一个用于 Ruby 的 gem,但考虑到发送击键很简单,它并不是真正需要的:
%x(xdotool key super+w) #this would press the keys super and w simultaneoulsy
还有鼠标事件。
不幸的是,rb-applescript
有点过时和不稳定。
对于 mac,您可能需要使用:
%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')