Instance インスタンス


 このオブジェクトは、SeraphyScriptToolsを使いWSHに対話機能を持たせる場合に必要となる、いくつかのオブジェクトを自動生成し管理するためのオブジェクトです。

 多くの場合は、このInstanceオブジェクトを最初に生成し、ここからウィンドウなどのオブジェクトを管理すると便利なように作られています。

 

VBScriptの場合

Dim Instance
Set Instance = CreateObject( "SeraphyScriptTools.Instance")

"SeraphyScriptTools.Instance"というProgIDです。

オブジェクトを生成すると、自動的にメインフレーム、コモンダイアログが初期化されます。

 

子オブジェクト関連

MainFrame

 メインフレームを示す、OverlappedWindowオブジェクトを返します。
 参照専用です。

Dialog

 メインフレームを親ウィンドウにもつように初期化されたCommDialogオブジェクトを返します。
 参照専用です。

 

ウィンドウ全般

WaitCursor

 ウェイトカーソルを管理します。
 すべてのOverlappedWindowにウェイトカーソルを設定するのと同じ効果があります。

 

SeraphyScriptTools固有

Version

 このSeraphyScriptToolsのバージョンをあらわします。

 

ユーテリティ

PosX
PosY

 現在のマウス位置をスクリーン座標で返します。

Keyboard ( VK )

 VKで指定した仮想キーコードをもつキーが現在押されているか判定します。

 

オブジェクトの生成

CreateFrame

 新しいフレームを作成し、OverlappedWindowオブジェクトを返します。
 新しいフレームはタスクバーにキャプションをもつウィンドウです。

 返されたオブジェクトをスクリプト上の変数で保持しつづける必要はありません。
 フレームはInstanceオブジェクトが管理しつづけています。
 スクリプトからの参照が1つもないフレームが×ボタンが押される等によって非表示になっている場合、つぎのCreateFrameメソッドを呼び出したときにメモリ上から破棄されます。

 

ウィンドウ管理

WaitEvent timeout

 このオブジェクトから生成されたフレームウィンドウ、および、フレームウィンドウが個々に所有する子ウィンドウに対するメッセージ処理を一括して行います。
 Timeoutはメッセージがくるまで待機する時間をミリ秒で指定します。
 省略して構いません。省略時は1000、つまり1秒間待ちます。
 0を指定すると無限に待ちます。

 戻り値はイベントを発生させたOverlappedWindowオブジェクトを返します。
 通常は、この返されたオブジェクトを利用する必要はありません。

 


オブジェクトを生成し、フレームウィンドウを表示し、ユーザーが「閉じる」ボタンをクリックするまで待機するプログラムは、つぎのようになります。

Option Explicit …@

Dim Obj
Set Obj = WScript.CreateObject("SeraphyScriptTools.Instance") …A

Obj.MainFrame.Open "SIMPLE-WINDOW" …B

While Not Obj.MainFrame.Quit …C
Obj.WaitEvent
WEnd

Set Obj = Nothing …D

《 説明 》

@ Option Explicit

これは、VBScriptで定義されていない変数を使うとエラーができるようにするものです。
エラーを沢山発生しやすくすることで、プログラムミスをはっきりさせることができます。
必須ではありませんが、これを記述することを推奨します。

A 「SeraphyScriptTools.Instance」のActiveXオブジェクトの生成です。
  オブジェクトの代入は、すべてSetで行わなければなりません。
 オブジェクトは参照されているかぎり、その実体は解放されません。

B  インスタンスオブジェクトのObjは、生成された時点でMainFrameというOverlappedWindowオブジェクトを生成してプロパティーとして所有しています。
 このMainFrameオブジェクトに対して、Openメソッドを実行します。
 Openメソッドはウィンドウのタイトルを設定して、ウィンドウを作成・表示します。

C これがメッセージループというものです。
 MainFrameオブジェクトのQuitプロパティーがFalse(偽)であるかぎり、メッセージを処理しつづけます。
 このQuitプロパティーとはウィンドウの×ボタン が押されたときなどにTrue(真)となります。

D 変数Objに参照しているオブジェクトを明示的に解放します。
 このプログラムの例ではVBScriptは、このあと終わりますので、わざわざ明示する必要はありません。
 しかし、実際のプログラムでは忘れてはならない処理です。