Wie Tastatur- und Mausbefehle an das zugrunde liegende Betriebssystem mit Ruby schicken?

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

  •  22-07-2019
  •  | 
  •  

Frage

Gibt es ein Betriebssystem neutral für Ruby-Tastatur und Mausereignisse auf das zugrunde liegende Betriebssystem zu senden?

Ein offensichtliche (für mich) Ansatz ist es, die Ruby-/ Java-Bindungen verwenden und java.awt.Robot, aber das scheint nur dumm.

War es hilfreich?

Lösung

Für Mac:

gem install rb-appscript

Dann können Sie es mit einem Skript wie folgt testen:

require "rubygems"
require "appscript"
include Appscript

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

Für Windows: (ungetestet, aus diesem Thread entlehnt)

require "win32ole"

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

Andere Tipps

Der Vollständigkeit halber, dachte ich, ich würde für eine Lösung enthalten, wenn Sie Linux verwenden.

Unter Linux für Tastenanschläge Automatisierung können Sie verwenden xdotool. Es gibt auch ein Juwel für Ruby, aber es nicht wirklich ist erforderlich, dass Tastenanschläge senden erwägen ist eine einfach wie:

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

Es gibt auch Mausereignisse zu.

Unfortunatly, rb-applescript ist etwas veraltet und wackelig.

Für den Mac, können Sie verwenden möchten:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top