SendKeysを利用して「ある程度」自動処理を実行するVBスクリプト

初めに言っておきます。僕はプログラムがほとんど出来ません。
初めにソースコードがあって、ちょこっと修正するくらいなら出来なくは無いんですが、プログラムを作らないとやっていけない状況になった事が無いってのが一番大きいんだと思うんですが・・・、まあ、とにかくプログラムが出来ないんですよ。で、VBSって呼ばれている正式名称VB Scriptでリハビリからやっていこうじゃないか。と思っているわけです。

昔からセコイ事をやるためにパソコンはしょうがなく覚えていったんですが、まあ、しょうもない事をスクリプトで解決していこうじゃないか、その中でプログラムへの耐性をつけていけば良いじゃないか。ってのが趣旨です。

基本的にですね、自分でやるのが面倒な物をスクリプトでなんとかしていこう。っていう中で、なんとなく「あー、プログラムもやってみればそれなりに出来るかも知れないな・・・」みたいな事が思えれば良いと思っています。

2011年3月3日追記
SendKeysを利用してGUIを操作する方法についてです。動作条件が非常に難しいですが、簡単に作れるプログラムという意味では一度動作を確認してみることは初心者の方にとっては有効だと思います。
たかだか4年前に自分が記載した文書なのですが、今読み返すとお恥ずかしい限りです・・・。

今回のミッション

認証のあるWebページってあるじゃないですか。パスワードを覚えてくれて自動ログインしてくれれば良いんですが、セキュリティの観念からかパスワードを記憶してくれるページって少ないですよね。
僕はあれが毎度毎度うっとおしいと思っていたわけです。
どうせならルーチンワークなんてやりたくないですよね。今回はそこを自動化してみます。

Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("notepad.exe")

とりあえずここに謎の文字列があるわけです。これを適当にデスクトップ等に新規作成でテキスト文書を作成して保存してください。そうしたら拡張子を.vbsに変更します。最近のご時世じゃvbsなんてウイルスくらいしか見ないって・・・。なんて思うかも知れませんがとりあえずここは百歩譲って拡張子はvbsにしてください。もちろんファイル名は適当で良いですよ。
優柔不断過ぎてファイル名も決められない場合には以下のように名前を付けてください。

notepad.vbs

名前をつけたらこのファイルを実行してみましょう。メモ帳が開きましたか?開けば成功です。

Set WshShell=Wscript.CreateObject("Wscript.Shell")

そしたらさっきのスクリプトを以下のように書き換えてみましょう。

Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("notepad")
WScript.Sleep(2000)
WshShell.SendKeys("I have a pen")
WshShell.SendKeys("{ENTER}")
WshShell.SendKeys("I am a pen")

どうでしょう?今度はメモ帳が開いた後、謎の英語が繰り広げられたと思います。自動化ですね。

WshShell.SendKeys("I have a pen")

見たままですが、この行でI have a penって文字をメモ帳に送っているわけです。

WshShell.SendKeys("{ENTER}")

こんな感じに書くと改行してくれます。

WScript.Sleep(2000)

この行は2000ミリ秒次の行に行くの待ってて。って意味です。これが無いとメモ帳が開く前にI have a penと入力してしまうわけです、早技です。

ここまで書けばなんとなくWebページに自動ログインする方法が分かったんじゃないかと思います、セコイですが。例えばHotmailに自動でログインするスクリプトを作ってみました。

Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("http://hotmail.msn.co.jp")
WScript.Sleep(4000)
'ここにメールアドレス
WshShell.SendKeys("hogehoge@hotmail.com")
WshShell.SendKeys("{TAB}")
'ここにパスワード
WshShell.SendKeys("password")
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{ENTER}")
WshShell.SendKeys("hogehoge@hotmail.com")

ここに自分のメールアドレス

WshShell.SendKeys("password")

ここに自分のパスワードを入力する事でこのスクリプトを実行すると勝手にログインしてくれます。もちろんファイルの拡張子はvbsね。

VBSの場合、行頭に’を付ける事でその行を読み飛ばします。コメントアウトってやつです。’を付けた場所に自分で分らなくならないようにコメントを書くことが出来ます。

今日のまとめ

とりあえずですね、本職プログラマの方から見ればかなりダサいプログラミングだと思います。ただ、最初からカッコイイ物なんて作れるわけないんだし、僕と同じでなんとなくスクリプト作れれば便利かな?くらいに思ってもらえれば嬉しいです。
最後に言っておきますが、このスクリプトを使ってログインを行う場合には、パスワードが平文(暗号化されていないって事です)で保存されてしまうのでセキュリティ的に最悪だと思います。なのでヘビーな使い方はしないで自宅のパソコンで使ってくださいね。
セキュリティを考慮した設計もおそらく可能だと思いますが、いかんせん僕に知識が無いので書けません。今度本職プログラマに聞いておくことにします。
まあ、要するにこれを使えばパスワードが保存されないWebページにだって自動ログイン出来てしまうわけです。
そう、例えば勤怠管理システムとかでもね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です