Rubyを使用して、基になるオペレーティングシステムにキーボードとマウスのコマンドを送信する方法

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

  •  22-07-2019
  •  | 
  •  

質問

Rubyが基盤となるオペレーティングシステムにキーボードイベントとマウスイベントを送信する、オペレーティングシステムに中立な方法はありますか?

明らかな(私にとって)アプローチの1つは、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用のgemもありますが、キーストロークの送信が次のように簡単であることを考えると、実際には必要ありません。

%x(xdotool key super + w)#これはキーsuperとwを同時に押す

マウスイベントもあります。

残念なことに、 rb-applescript は少し古くて不安定です。

Macの場合、以下を使用できます。

%x(osascript -e 'tell application "System Events" to keystroke "Look Ma, keystrokes!"')
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top