Rubyを使用して、基になるオペレーティングシステムにキーボードとマウスのコマンドを送信する方法
-
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!"')
所属していません StackOverflow