石澤知広

wshでお迎え。

2008-07-29 22:55:20

弊社神保町オフィスのエントランスには、パナソニックの42型プラズマディスプレーが壁掛けされているのですが、そこには弊社で運営している各媒体の最新トップページやCM動画などがくるくる上映されています。担当者が迎えに行くまでにお越し下さったお客様の目にとまればなーっと置いてあるのですが、実はこれwshで書いたスクリプトで上映しています。

 

言語は今のところVBScriptです。(近々JavaScriptにマイグレーション予定!!)

スクリプトの構成は大きく2つです。wshの本体であるスクリプトファイル(ここではAutoSurfing.vbsと名づけよう!)と読み込みたいURLやCM動画を定義するリスト(urllist.txt)です。AutoSurfing.vbsの主な動きは

1.URLリストを読み込む
2.ブラウザを開く
3.ブラウザが閉じられるまで処理を繰り返す。
 3-1.リストからURLやPathを取得してブラウザにナビゲートする。
 3-2.ページを下まで表示する。

こんな感じです。

AutoSurfing.vbsのソースはこんな感じです。

Dim BsWidth, BsHeight,speed
BsWidth = 1280
BsHeight = 1024
speed = 3 'スクロールのスピード マシンスペックで大分変わるけど2か3位がいいかな?'
Dim complete
Dim urlList()
ReDim urlList(0)

Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")

IE.silent = True
IE.StatusBar = True

If Fs.FileExists("urllist.txt") Then
    readfile "urllist.txt"
End If

If UBound(urlList) = 0 Then
    WScript.Quit
Else
    ReDim Preserve urlList(UBound(urlList) - 1)
End If

Do 'このループによりブラウザが閉じられるまで一生繰り返される。'
    IE.Visible = True
    IE.Width = BsWidth
    IE.height = BsHeight

    Dim isStag
    For Each URL In urlList
        IE.Navigate URL
        Do 'ロードが完了するまで待つ'
            WScript.Sleep 100
        Loop While complete = False
        complete = False

        If URL = "C:\cm1.html" Then
            WScript.Sleep 100000 'CM1動画再生時間秒数スリープ'
        ElseIf URL = "C:\cm2.html" Then
            WScript.Sleep 100000 'CM2動画再生時間秒数スリープ'
        Else
            WScript.Sleep 3000 '3秒待つ サイトのロゴを見てもらうため。'
            isStag = True
            Dim height
            Dim tmp_height
            height = IE.Document.body.clientHeight
            Dim j
            j = 0
            Do While j <= height
                j = j + speed
                On Error Resume Next
                IE.Document.parentWindow.scrollTo 0, j
                If Err <> 0 Then
                    Err.Clear
                    Exit Do
                End If
            Loop
       End If
    Next
Loop

Sub readfile(path)
    Set ts = Fs.OpenTextFile(path, 1)
    Do While ts.AtEndOfStream <> True
        tmp = ts.ReadLine
        tmp = Trim(tmp)
        If Len(tmp) <> 0 Then
            urlList(UBound(urlList)) = tmp
            ReDim Preserve urlList(UBound(urlList) + 1)
        End If
    Loop
    ts.Close
End Sub

Sub IE_DocumentComplete(pdisp, surl)
    complete = True 'ロード完了時に発生'
End Sub

Sub IE_OnQuit()
    Set IE = Nothing
    WScript.Quit
End Sub

そして

urllist.txtはこんな感じです。

http://japan.cnet.com/
http://japan.zdnet.com/
http://japan.gamespot.com/
http://builder.japan.zdnet.com/
http://v.japan.cnet.com/
http://tetsudo.com/

AutoSurfing.vbsに書いているcm1.htmlとcm2.htmlとなっているところは動画ファイルをsrcに持つembedタグがあるだけのような物です。urllist.txtに書き込むとサイト表示の間にCM動画などを挿入できます。

実際のソースはもうちょっとだけ複雑なことしています。どうもうちの環境だとQuickTimeのAutoPlayがうまく出来なくて、SendKeysでEnterキーを送ってやらなくちゃいけなかったりするんです。あ、ちなみにブラウザはIE6でしか検証していないです。すみません。

このスクリプトが入っているPCはBIOSの設定で毎営業日の朝9時に電源が入るようになっています。そしてPCが立ち上がるとタスクスケジューラでAutoSurfingが起動されるようになっています。もちろん19時を過ぎると勝手にシャットダウンします。

改造したらUPDATEします!

もしも、弊社にお越し頂く機会がありましたら、是非エントランスのモニターを見てみてください。
 

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 2件のコメント
#1 lanikai   2008-07-30 16:48:50
PDPのアスペクトが合っていないのが若干気になります(笑)
#2 石澤知広   2008-07-30 19:16:06
コメントありがとうございます!
16:9なのに4:3になっている件、おおおおおお!
作ったときのPCが4:3でそのまんまになっていました。
しまった気が付きませんでした!ありがとうございまっす!!
  • 新着記事
  • 特集
  • ブログ