C#发现之旅:于动态编译的VB.NET脚本引擎(下)
2010-09-30 21:08:13 来源:WEB开发网和其他类型不一样,笔者设置该类型的名称空间为MyVBAScript.Global,这样是为了将全局对象和其他类型区别开来,减少VB.NET编译器的工作量。
初始化脚本引擎
在窗体的加载事件中我们初始化脚本引擎,其代码为
private void frmMain_Load(object sender, EventArgs e)
{
//初始化窗体
// 创建脚本引擎
myVBAEngine = new XVBAEngine();
myVBAEngine.AddReferenceAssemblyByType(this.GetType());
myVBAEngine.VBCompilerImports.Add("MyVBAScript.Global");
// 设置脚本引擎全局对象
MyVBAScript.Global.GlobalObject.myWindow = new XVBAWindowObject(this, myVBAEngine, this.Text);
MyVBAScript.Global.GlobalObject.myDocument = new DocumentClass(this);
// 加载演示脚本文本
string strDemoVBS = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "demo.vbs");
if (System.IO.File.Exists(strDemoVBS))
{
System.IO.StreamReader reader = new System.IO.StreamReader(strDemoVBS, System.Text.Encoding.GetEncoding("gb2312"));
string script = reader.ReadToEnd();
reader.Close();
myVBAEngine.ScriptText = script;
if (myVBAEngine.Compile() == false)
{
this.txtEditor.Text = "编译默认脚本错误:"r"n" + myVBAEngine.CompilerOutput;
}
// 刷新脚本方法列表
this.RefreshScriptMethodList();
}
}
更多精彩
赞助商链接