Wie Tastatur- und Mausbefehle an das zugrunde liegende Betriebssystem mit Ruby schicken?
-
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.
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!"')