VBSでミリ秒を取得!
見出しでは「VBSでミリ秒を取得」としてますが、
特にこのことを取り上げたい訳ではありません(笑)
結果的にVBSでミリ秒が取得できますといった感じです。
たまたま面白いコンポーネントを知って、これは便利かも〜と思いました。
ScriptControl
ScriptControlを使うと、VBScript内で他言語を実行出来ます。
ネットを斜め読みすると、JavaScriptやRubyScriptが使えるみたい。
よって、ミリ秒を取得するというのはVBScript内でJavaScriptを使用することにより可能になります。
ミリ秒取得サンプル
'getMilliseconds.vbs Option Explicit MsgBox getMilliseconds Function getMilliseconds() Dim objJS Set objJS = CreateObject("ScriptControl") With objJS .Language = "Jscript" .AddCode ("function getMilliseconds(){d = new Date(); return d.getMilliseconds();}") getMilliseconds = .CodeObject.getMilliseconds() End With Set objJS = Nothing End Function
AddCodeメソッドでJavaScriptのユーザー定義関数を入れて、CodeObjectから実行します。
ScriptControlオブジェクトからRun("ユーザー定義関数名")でもいけます。
ネットでよく見かけるURLエンコードのスクリプトですが、
組み込み関数ならAddCodeでコードを入力しなくてもそのまま実行出来ます。
URLエンコードサンプル
Option Explicit MsgBox encodeURIComponent(InputBox("マルチバイト文字を入力。")) Function encodeURIComponent(enc_str) Dim objJS Set objJS = CreateObject("ScriptControl") With objJS .Language = "Jscript" encodeURIComponent = .CodeObject.encodeURIComponent(enc_str) End With Set objJS = Nothing End Function
VBScriptに無くてJavaScriptにある関数が使えるのは良いですね。
使い方によって、かなり便利になりそう。
追記
追記している2017年現在、64Bit OSが主流になっています。しかし64Bit OSではScriptControlは使用出来ません。今後採用される予定もないようです。
しかし以下の方法で代用が出来ます。
htmlfileオブジェクト
htmlfileオブジェクトでHTMLDocumentを作成して、そこでJavaScriptを実行させるというものです。こんな感じです。
'getMilliseconds.vbs Option Explicit MsgBox getMilliseconds() Function getMilliseconds() Dim d, e Set d = CreateObject("htmlfile") Set e = d.createElement("body") e.setAttribute "id", "rs" d.appendChild e d.parentWindow.execScript "d = new Date(); document.getElementById('rs').innerText = d.getMilliseconds();", "JScript" getMilliseconds = CLng(e.innerText) Set e = Nothing Set d = Nothing End Function
あれこれ処理して得られた結果をタグに書き出して、そのタグのインナーテキストを返すといった感じですね。今回数値を返す関数ですが、そのままでは文字列としての数値が返ってしまうと思うので、一応CLngで変換してます。
ScriptControlの存在を忘れていて、このページへのアクセスログで久しぶりに本記事を見てそんな方法もあったなぁと思い出しました。試しに実行してみたところ現在のWindows 10 64Bitでは動かず追記に至りました。
活用できる場面があれば使いたいと思います。
- 作者: 五十嵐貴之
- 出版社/メーカー: ソシム
- 発売日: 2009/06/01
- メディア: 単行本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (27件) を見る