2009-09-18 12 views
8

Czy istnieje system operacyjny, który umożliwia Ruby przesyłanie zdarzeń klawiatury i myszy do systemu operacyjnego?Jak wysyłać polecenia klawiatury i myszy do podstawowego systemu operacyjnego za pomocą Ruby?

Jednym z oczywistych (dla mnie) podejść jest użycie wiązań Ruby/Java i użycie java.awt.Robot, ale to wydaje się głupie.

+0

jaki system operacyjny? Każda platforma ma własne wiązania Ruby. – tadman

+0

"neutralny system operacyjny". Jeśli nie ma takiej biblioteki, to Windoze i Mac. – John

Odpowiedz

7

Dla Mac:

gem install rb-appscript 

Następnie można przetestować go ze skryptu jak ten:

require "rubygems" 
require "appscript" 
include Appscript 

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

dla systemu Windows: (niesprawdzone, 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

Co z Linuxem (Ubuntu)? –

+0

@AndreyBotalov Nie wiem. Ktoś powinien opublikować odpowiedź na to. :-) –

4

F lub ze względu na kompletność, myślałem, że dołączę rozwiązanie, jeśli korzystasz z Linuksa.

W systemie Linux do automatyzacji naciśnięć klawiszy można użyć narzędzia xdotool. Istnieje również gem dla Ruby, ale nie jest to naprawdę konieczne, uznając, że wysyłanie naciśnięć klawiszy jest łatwe, jak:

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

Jest też zbyt zdarzenia myszy.

0

Niefortunnie, rb-applescript jest trochę przestarzały i chudy.

dla Mac, można użyć:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"') 
Powiązane problemy