Как отправить команды клавиатуры и мыши в основную операционную систему, используя Ruby?

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

  •  22-07-2019
  •  | 
  •  

Вопрос

Есть ли у Ruby нейтральный способ операционной системы отправлять события клавиатуры и мыши в основную операционную систему?

Один очевидный (для меня) подход - использовать привязки Ruby / Java и использовать java.awt.Robot, но это просто глупо.

Это было полезно?

Решение

Для Mac:

gem install rb-appscript

Затем вы можете проверить это с помощью сценария, подобного следующему:

require "rubygems"
require "appscript"
include Appscript

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

Для Windows: (не проверено, заимствовано из этой темы )

require "win32ole"

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

Другие советы

Для полноты картины я решил включить решение, если вы используете Linux.

В Linux для автоматизации нажатий клавиш вы можете использовать xdotool. Для Ruby также есть жемчужина, но на самом деле это не требуется, учитывая, что отправка нажатий клавиш является легкой задачей:

% x (клавиша xdotool super + w) # при этом одновременно нажимаются клавиши super и w

Также есть события мыши.

К сожалению, rb-applecript немного устарел и шаток.

Для Mac вы можете использовать:

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top