C#からVBScriptのコードを呼び出す一番簡単なサンプル

C#やVB.NETでWindowsのプログラムを作っているとき、プラグインのような形で実行内容をカスタマイズしたい場合があります。きちんと作るには.dllを用意した方が良いですが、小さなツールだとそこまで大げさに作りたくない時もあります。

このような場合は、Microsoft Script Controlというライブラリを使うことで、C#のプログラムからVBScript(*.vbs)やJScript(*.js)のコードを外部スクリプトとして、呼び出すことができます。

今回はVBScriptの関数を呼び出せる最低限のプログラムサンプルを作成しました。
プログラム中のコメントに記載していますが、Microsoft Script Control 1.0の参照設定が必要です。

using System;
using System.Collections.Generic;
using System.Windows.Forms;
 
public partial class Form1 :Form {
    public Form1() {
        InitializeComponent();
    }
 
    private void button1_Click( object sender, EventArgs e ) {
 
        // VBScriptのScriptControlを取得 
        //   ※使用にはMicrosoft Script Control 1.0の参照設定が必要
        MSScriptControl.IScriptControl scriptCtrl = new MSScriptControl.ScriptControl();
        scriptCtrl.Language = "VBScript";
 
        // 実行するスクリプトを指定
        scriptCtrl.AddCode( txtScript.Text );
 
        // 関数への引数を指定
        List<object> paramList = new List<object>();
        paramList.Add( 10 );
        paramList.Add( 20 );
 
        // 名前を指定してVBScriptの関数を実行
        var result = scriptCtrl.Run( "AddValue", paramList.ToArray() );
 
        // 実行結果を画面に出力
        txtOutput.Text = result.ToString();
    }
}




実行結果は、以下のような感じで確かにVBScript実行結果が出力されています。
VBScriptスクリプト自体を単体確認する方法は、こちらの記事で説明しています。



プログラムのサンプルも置いておきます。スクリプトを変更することで出力結果が変わることを確認してみてください。
RunVbsExample1.exe

関連記事

One Response to “C#からVBScriptのコードを呼び出す一番簡単なサンプル”

  1. 小林丸 より:

    参考になりました。
    ありがとうございます。

小林丸 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。