Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

WSH | WSHを利用してsendkeyでGUIアプリケーションを自動操作

概要

sendkeyでGUIアプリケーションを自動操作

詳細

WSHを利用してWindows環境のアプリケーションにキーを送信して自動操作します。

実際にこのような操作が必要となるケース
GUIを操作するAPIが提供されていない場合の自動化
┠テスト
┗紙芝居キャプチャ
思いつく範囲では上記のような内容。

ただし、キーを送信しているだけなのでプログラムの実行中に
割込が入ったり手動でフォーカスを別のところに移したりしてしまうと
移動した先でキーを送信してしまうためご作動のもととなる。
PCを操作していない時にコマンドだけ実行して離席したり、空きPCを
利用したり、など利用に際して注意が必要。

サンプル

前提

Rubyからwin32oleを利用して実装します。

仕様

Notepadを開く=>hogeと入力=>higeと入力=>hageと入力=>アプリケーションを終了する

ソースコード

VBScript, JavaScriptなどでも記述できます

require 'win32ole'

def send_keys_with_sleep(wsh, key)
  wsh.SendKeys key
  sleep 1
end

wsh = WIN32OLE.new("WScript.Shell")
wsh.run "notepad"
sleep 3
["hoge\n", "hige\n", "hage\n", "%(f)", "X", "%(N)"].each {|w|send_keys_with_sleep wsh, "#{w}"}
実行中の文字列部分の出力イメージ