2009-09-18 6 views
8

Gibt es eine betriebssystemneutrale Möglichkeit für Ruby, Tastatur- und Mausereignisse an das zugrunde liegende Betriebssystem zu senden?Wie können Tastatur- und Mausbefehle über Ruby an das zugrunde liegende Betriebssystem gesendet werden?

Eine offensichtliche (für mich) Ansatz ist die Verwendung der Ruby/Java-Bindungen und java.awt.Robot verwenden, aber das scheint nur albern.

+0

Welches Betriebssystem? Jede Plattform hat ihre eigenen Ruby-Bindungen. – tadman

+0

"Betriebssystem neutral". Wenn keine solche Bibliothek existiert, dann Windoze und Mac. – John

Antwort

7

Für Mac:

gem install rb-appscript 

Dann 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, borrowed from this thread)

require "win32ole" 

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

Was ist mit Linux (Ubuntu)? –

+0

@AndreyBotalov Ich weiß es nicht. Jemand sollte eine Antwort dafür schreiben. :-) –

4

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

Unter Linux können Sie zur Automatisierung von Tastenanschlägen xdotool verwenden. 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 auch Mausereignisse.

0

Leider ist rb-applescript ein wenig veraltet und wonky.

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

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"') 
Verwandte Themen