VBScriptでキー入力エミュレーション

昼から豊中で天津麻婆を食い、3,4限ソフトウェア設計論。毎回変なことをやらされるわけですが、今日は普通にソフトウェアテストについての講義。普通にやろうと思えばできるじゃん。いつもそれでお願いします。

研究室の各マシンでtopした結果を収集するスクリプトなるものをbashで書こうとがんばってみたわけですが、これが思った以上に大変。何ができないかというとsshってリダイレクトでパスワード入力できないという罠。パスワード渡す引数もないし。おそらくセキュリティ上の理由やと思う。仕方ないのでbashはあきらめ、Cygwinに向かって、WSH(Windows Script Host)でキーボードを絶妙のタイミングで叩くという裏技をミジンコに教えてもらう。なんかこんなかんじでVBScript書いて.vbsで保存したらダブルクリックするだけで指定したウィンドウに向かってキー入力を投げてくれる。

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.AppActivate("ターゲットウィンドウ")
objShell.SendKeys "Hello World"

へぇそんな便利なものが実はWindowsにはあったのか。特別にスクリプト環境インストールする必要もなくWindowsだけあれば使えるってのはいいなぁ。これでcygwinに向かってキーを投げる。一応ちゃんと動くものはできたけど、マシンによってレスポンス速度が違うからSleepのタイミング限りなく難しい。すんごい使いにくい。ぶっちゃけ作っといてたぶんこれ使わねーな(つД`)いや、まぁ作るの楽しかったからえーけど。てかこのVBScript使ってキーボード入力をエミュレーションするのなんか別のことに応用できそうな予感。