Come inviare comandi da tastiera e mouse al sistema operativo sottostante usando Ruby?
-
22-07-2019 - |
Domanda
Esiste un modo neutrale del sistema operativo per Ruby di inviare eventi di tastiera e mouse al sistema operativo sottostante?
Un approccio ovvio (per me) è quello di usare i collegamenti Ruby / Java e usare java.awt.Robot, ma sembra sciocco.
Soluzione
Per Mac:
gem install rb-appscript
Quindi puoi provarlo con uno script come questo:
require "rubygems"
require "appscript"
include Appscript
app("TextEdit").activate
app("System Events").keystroke("Look Ma, keystrokes!")
Per Windows: (non testato, preso in prestito da questa discussione )
require "win32ole"
wsh = WIN32OLE.new("WScript.Shell")
wsh.Run("Notepad.exe")
while not wsh.AppActivate("Notepad")
sleep .1
end
wsh.SendKeys("Look Ma, keystrokes!")
Altri suggerimenti
Per completezza, ho pensato di includere una soluzione per se stai usando Linux.
Su Linux, per automatizzare i tasti premuti è possibile utilizzare xdotool. C'è anche una gemma per Ruby, ma non è davvero necessario considerando che inviare i tasti è facile come:
% x (tasto xdotool super + w) # questo preme i tasti super e w simultaneoulsy
Ci sono anche eventi del mouse.
Sfortunatamente, rb-applescript
è un po 'datato e traballante.
Per il Mac, potresti voler usare:
%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')