Comment envoyer des commandes clavier et souris au système d'exploitation sous-jacent à l'aide de Ruby?

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

  •  22-07-2019
  •  | 
  •  

Question

Existe-t-il un moyen neutre pour le système d'exploitation permettant à Ruby d'envoyer des événements de clavier et de souris au système d'exploitation sous-jacent?

Une approche évidente (pour moi) consiste à utiliser les liaisons Ruby / Java et à utiliser java.awt.Robot, mais cela semble simplement idiot.

Était-ce utile?

La solution

Pour Mac:

gem install rb-appscript

Ensuite, vous pouvez le tester avec un script comme celui-ci:

require "rubygems"
require "appscript"
include Appscript

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

Pour Windows: (non testé, emprunté à ce fil )

require "win32ole"

wsh = WIN32OLE.new("WScript.Shell")
wsh.Run("Notepad.exe")
while not wsh.AppActivate("Notepad")
  sleep .1
end
wsh.SendKeys("Look Ma, keystrokes!")

Autres conseils

Par souci d'exhaustivité, je pensais inclure une solution pour ceux qui utilisent Linux.

Sous Linux, vous pouvez utiliser xdotool pour automatiser les frappes au clavier. Il y a aussi un petit bijou pour Ruby, mais ce n’est pas vraiment nécessaire, étant donné que l’envoi de frappes au clavier est aussi simple que:

% x (clé xdotool super + w) # vous appuieriez sur les touches super et w simultanément

Il y a aussi des événements de souris.

Malheureusement, rb-applescript est un peu daté et saturé.

Pour le Mac, vous pouvez utiliser:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top