Come inviare comandi da tastiera e mouse al sistema operativo sottostante usando Ruby?

StackOverflow https://stackoverflow.com/questions/1446327

  •  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.

È stato utile?

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!"')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top