Posts on this page


May 14, 2014

IEに表示されているPDFをVBScriptでダウンロードして保存する



webにあるpdfファイルがプラグインでブラウザウィンドウ内に直接表示されている場合に、VBScriptを使ってローカルに保存する方法を示します。

なお、ここではpdfファイルを例に説明していますが、別にどんなファイル形式であっても同じ考え方を適用できます。例えば、画像ファイル(png, tiff, jpgファイルなど)や音声ファイル(mp3)であってもほとんど同じコードで処理できます。

May 13, 2014

IEのボタンクリックなどのイベントをWSH/VBScriptから監視する

VBScriptでOnclick = …何と書くか

VBScriptを使ってIEに読み込ませたページ上で、ボタンがクリックされた場合に、それを検知するためのコードを示します。 GetRef関数で得られたOnClickSubプロシージャへのポインタをonclickに設定しています。これにより、ボタンがクリックされるとメッセージボックスが表示されます。

設定されたイベントフックはこのスクリプトが動作している間しか機能しませんので、無限ループを回しておき、IEが終了するとともにスクリプトを終了させています。そのため、CreateObject関数では"IE_"としてイベントプレフィックスを設定しており、IEが終了するときに発生するOnQuitイベントを捕捉し、その時にスクリプト自体も終了させています。
MoniteringIEEvent

Sub MoniteringIEEvent
    Set ie = WScript.CreateObject("InternetExplorer.Application", "IE_")

    ie.Navigate "http://www.google.co.jp"
    ie.Visible = True
    waitIE ie

    ie.Document.getElementById("gbqfq").Value = "vbscript DOM event hooking"
    ie.Document.getElementById("gbqfb").onclick = GetRef("OnClickSub")

    Do While True
        Wscript.sleep 1000
    Loop
End Sub

Sub IE_OnQuit
 WScript.Quit
End Sub

Sub OnClickSub()
    MsgBox  "Search button clicked!"
End Sub

Sub waitIE(ie)
    Do While ie.Busy = True Or ie.readystate <> 4
        WScript.Sleep 100
    Loop
    WScript.Sleep 100
End Sub

応用できそうな事例

特定のページで特定のボタンを押すと、本来の動作に加えて独自機能が動く。例えば、検索したときに検索ワードをローカルファイルに記録していくスクリプトが書けるでしょう。これを実現するには、立ち上がっているIEのすべてのプロセスを監視するスクリプトも必要になりますが。

あるいは、スクリプトで起動したwebアプリケーションに対して、人の入力を待ってから次の動作を行う、ということもできるでしょう。例えば、結果を表示して人に選択させるような場面が考えられます。

広い意味でのアドオンを作ることもできるでしょう。あえてWSH/VBScriptで作るべきか、という議論はありますが、インストール不要でダウンロードも実行も容易という点では、環境に依存せず配布しやすいかもしれません。

参考

WScript.CreateObjectはVisual BsssicのCreateObjectと第2引数の意味がまったく違うことに注意です。
GetRef Function
http://msdn.microsoft.com/en-us/library/ekabbe10(v=vs.84).aspx
CreateObject Method
http://msdn.microsoft.com/en-us/library/xzysf6hc(v=vs.84).aspx
Scripting Events
http://msdn.microsoft.com/en-us/library/ms974564.aspx

May 11, 2014

IEをVBScriptから自動操作する

いろんなウェブサイトのログインや毎回PCを立ち上げる度に行っているInternet Explorerの操作があるならば、今すぐバッチファイルを作るといいでしょう。
テキストファイルを直打ちするだけで簡単に作ることができるし、一度作ってしまえば、次からそのファイルを実行するだけで作業が済んでしまいます。

以下では、WSH/VBScriptを用いたIEの自動化についてまとめます。