VBScriptでWindows Script Componentを使いこなす方法

Windows Script Component(WSC)は、VBScriptやJScriptを使って作成する再利用可能なコンポーネントで、COM(Component Object Model)オブジェクトとして機能します。

この技術を活用することで、スクリプトのモジュール化と再利用が容易になります。

この記事では、WSCファイルの作成、登録、解除方法について詳しく説明します。

Windows Script Componentとは

Windows Script Component(WSC)は、Windowsスクリプト環境で利用できる再利用可能なコンポーネントです。

これを利用することで、共通の機能を持つスクリプトを簡単に管理し、他のスクリプトから利用することができます。

主な特徴

  • COMオブジェクトとして機能:他のプログラムやスクリプトからアクセス可能
  • 再利用可能:一度作成したコンポーネントを繰り返し使用
  • スクリプト言語対応:VBScriptやJScriptで記述

WSCの基本構造

WSCファイルはXML形式で記述され、スクリプト言語で機能を定義します。

以下は、シンプルなWSCファイルの例です。

<?xml version="1.0"?>
<component>
  <registration
    progid="MyComponent.MyClass"
    version="1.0"
    classid="{12345678-1234-1234-1234-123456789012}" />

  <public>
    <method name="SayHello" />
  </public>

  <script language="VBScript">
    <![CDATA[
    Function SayHello()
      SayHello = "Hello, World!"
    End Function
    ]]>
  </script>
</component>

主な要素の説明

  • <registration>:コンポーネントの識別情報を定義
  • <public>:外部からアクセス可能なメソッドやプロパティを公開
  • <script>:スクリプトの実装を記述

WSCの作成手順

ステップ1: WSCファイルの作成

まず、.wscファイルを作成します。

以下のコードをテキストエディタに貼り付けて、MyComponent.wscとして保存します。

<?xml version="1.0"?>
<component>
  <registration
    progid="SampleComponent.Hello"
    version="1.0"
    classid="{A1B2C3D4-E5F6-7890-A1B2-C3D4E5F67890}" />

  <public>
    <method name="SayHello" />
  </public>

  <script language="VBScript">
    <![CDATA[
    Function SayHello()
      SayHello = "Hello from WSC!"
    End Function
    ]]>
  </script>
</component>

ステップ2: WSCファイルの登録

WSCファイルをシステムに登録するには、コマンドプロンプトを使います。

以下の手順で登録します。

  1. コマンドプロンプトを管理者として起動
    • スタートメニューを右クリックし、「管理者としてコマンドプロンプトを実行」を選択します。
  2. regsvr32コマンドでWSCファイルを登録
    • 次のコマンドを入力して、WSCファイルのパスを指定します。
regsvr32 "C:\path\to\your\MyComponent.wsc"

実際のWSCファイルのフルパスに置き換えて実行します。

ステップ3: WSCファイルの解除

WSCファイルの登録を解除するには、以下の手順を実行します。

  1. コマンドプロンプトを管理者として起動
    • スタートメニューを右クリックし、「管理者としてコマンドプロンプトを実行」を選択します。
  2. regsvr32コマンドでWSCファイルを解除
    • 以下のコマンドを使用してWSCファイルの登録を解除します。
regsvr32 /u "C:\path\to\your\MyComponent.wsc"

解除するファイルのパスを指定して実行します。

ステップ4: WSCファイルの利用

作成したWSCファイルを利用するには、以下のようなVBScriptを用意します。

Set obj = CreateObject("SampleComponent.Hello")
MsgBox obj.SayHello()

このスクリプトを実行すると、SayHelloメソッドが呼び出され、メッセージボックスに「Hello from WSC!」と表示されます。

WSCを利用するメリット

モジュール化と再利用性

WSCを使うことで、共通の機能を一度作成し、複数のスクリプトで再利用できます。

これにより、開発の効率化が図れます。

保守性の向上

機能がモジュール化されているため、変更が必要な場合も該当コンポーネントだけを修正すればよく、他のプロジェクトに影響を与えずに保守が可能です。

WSCの応用例

ステップ1: 計算用コンポーネントの作成

簡単な計算機能を持つコンポーネントを作成します。

以下のコードをCalculator.wscとして保存します。

<?xml version="1.0"?>
<component>
  <registration
    progid="Calculator.Component"
    version="1.0"
    classid="{12345678-90AB-CDEF-1234-567890ABCDEF}" />

  <public>
    <method name="AddNumbers" />
  </public>

  <script language="VBScript">
    <![CDATA[
    Function AddNumbers(a, b)
      AddNumbers = a + b
    End Function
    ]]>
  </script>
</component>

ステップ2: 呼び出しスクリプトの作成

このコンポーネントを呼び出して計算するVBScriptを作成します。

Set calculator = CreateObject("Calculator.Component")
result = calculator.AddNumbers(5, 10)
MsgBox "The result is: " & result

このスクリプトを実行すると、「The result is: 15」と表示されます。

演習問題

この記事の内容を基にした演習問題を通じて、実際に手を動かしながら学習を進めましょう。

問題1

引数として与えられた文字列を逆順に返すコンポーネントを作成してください。

演習1:解答例
<?xml version="1.0"?>
<component>
  <registration
    progid="StringManipulator.Component"
    version="1.0"
    classid="{12345678-90AB-CDEF-1234-567890ABCDEF}" />

  <public>
    <method name="ReverseString" />
  </public>

  <script language="VBScript">
    <![CDATA[
    Function ReverseString(inputStr)
      Dim i, reversedStr
      reversedStr = ""
      For i = Len(inputStr) To 1 Step -1
        reversedStr = reversedStr & Mid(inputStr, i, 1)
      Next
      ReverseString = reversedStr
    End Function
    ]]>
  </script>
</component>

問題2

上記で作成したコンポーネントを呼び出し、文字列「VBScript」を逆順にして表示するVBScriptを書いてください。

演習2:解答例
Set stringManipulator = CreateObject("StringManipulator.Component")
reversed = stringManipulator.ReverseString("VBScript")
MsgBox "Reversed string: " & reversed

実行結果は「tpircSBV」となります。

まとめ

VBScriptを使ったWindows Script Component(WSC)の作成と利用方法について解説しました。

WSCを利用することで、スクリプトの再利用性や保守性が向上し、効率的な開発が可能になります。

演習問題にも挑戦し、実践的なスキルを身につけてください。