久しぶりにRubyでオートメーションのコードを書く

題名通り、今日は久しぶりにRubyでWin32OLEを使って自動化するコードを書いてました。(※ActiveScriptRuby使用)
タブとかキーボードからのキー操作を一箇所に固めておいて呼び出す感じにしてみました。
win32/clipboardのAPIはWebで公開されているものを拝借。便利ですねぇ。。
あ、コードは動けばいいという基準ですので、細かいところは無視です(w


require 'win32ole'
require 'Win32API'
require 'rubygems'
require 'win32/clipboard'

class ShellController
# ブラウザにアクセスするためのコントロールオブジェクト。
attr_reader :shell

#--------------------------------------------------
# 初期化処理。
# WScriptのShellオブジェクトを初期化する。
#--------------------------------------------------
def initialize
@shell = WIN32OLE.new('WScript.Shell')
end

#--------------------------------------------------
# 指定キーを押下したことにする。
#--------------------------------------------------
def send_key(keyname)
@shell.SendKeys(keyname)
end

#--------------------------------------------------
# クリップボードにデータを設定する。
#--------------------------------------------------
def set_clipboard_data(data)
Win32::Clipboard.set_data(data)
end

#--------------------------------------------------
# クリップボードからデータを取得する。
#--------------------------------------------------
def get_clipboard_data
Win32::Clipboard.data
end

呼び出し側は、こんな感じかなー。
hashにデータが入ってるのが前提です。
それをCtrl+Vのキー操作で貼り付けて、Enterキーを押下ってとこですね。
クリップボードを使ってデータを貼り付けてる理由は、WScriptのShellのSendKeysだとキー操作を送るだけになるので、
 変換が必要な日本語を送信はできない…というかすごい難しそうなので。


shell_controller = ShellController.new

shell_controller.set_clipboard_data(NKF.nkf("-s -W", hash[key]))
shell_controller.send_key("^V")
shell_controller.send_key("{enter}")

キーボードの自動操縦関係は、使いこなすと色々できますね。