C#发现之旅:于动态编译的VB.NET脚本引擎(下)
2010-09-30 21:08:13 来源:WEB开发网ScriptItem_Click方法中,首先获得用户点击的菜单项目,然后调用脚本引擎的Execute方法来执行脚本,菜单项目显示的文本就是脚本方法的名称。
演示用脚本代码说明
程序目录下有一个demo.vbs的文本文件,该文件内容就是演示实用的VBA.NET脚本。该脚本代码为
sub 显示当前使用的脚本代码()
document.text = window.engine.ScriptText
end sub
sub 插入当前时间()
document.Selection = DateTime.Now().ToString("yyyy年MM月dd日HH:mm:ss")
end sub
sub 屏幕状态()
window.alert("屏幕大小:" & window.ScreenWidth & " * " & window.ScreenHeight _
& vbcrlf & "窗体位置:" & window.left & " " & window.top _
& vbcrlf & "窗体大小:" & window.Width & " * " & window.height )
end sub
sub ShowText()
window.alert( document.text )
end sub
sub MoveWindow()
window.left = 100
end sub
sub ShowFileName()
window.alert( "当前文件名为:" & document.FileName )
end sub
sub AniMoveWindow()
window.left = window.left - 10
if( window.left > 10 )
window.SetTimeout( 500 , "AniMoveWindow" )
end if
end sub
dim Rate as double
sub 模拟显示正铉曲线()
Rate = Rate + 0.1
if( Rate > 50 )
exit sub
end if
dim strText as new string( " " , 50 + cint( math.sin( Rate ) * 30 ))
document.AppendText( vbcrlf & strText & "######" )
window.SetTimeout( 100 , "模拟显示正铉曲线")
window.Title = math.sin( Rate )
end sub
dim strTitle as string = "《C#发现之旅》系列课程的VB.NET脚本演示袁永福编写版权所有2008年"
dim TitleCount as integer
sub 在标题栏显示移动字幕()
TitleCount = TitleCount + 1
if( TitleCount > strTitle.Length )
TitleCount = 0
exit sub
end if
window.Title = strTitle.SubString( strTitle.Length - TitleCount , TitleCount )
window.SetTimeOut( 100 , "在标题栏显示移动字幕")
end sub
这里说明一下“模拟显示正铉曲线”这个脚本方法,首先定义一个Rate的全局变量作为计数器,每执行一次该计数器加一,若超过50则退出方法,脚本中使用sin函数计算出空白字符串的长度生成一个空白字符串,然后使用文档对象的AppendText方法向当前编辑的文档添加空白字符和结尾字符,这里脚本调用window对象的SetTimeout方法来延期调用这个脚本方法自己。于是这个脚本方法每隔100毫秒执行一次,并使用文本模拟显示正铉曲线,若显示了50次则停止执行。
这样袁某就完成了一个简单的文本编辑器程序,而且该程序能使用VBA.NET脚本引擎来扩展功能,能方便的进行二次开发。
部署脚本引擎
在实际开发中,开发人员可以将XVBAEngine等C#代码拷贝到应用程序中即可添加脚本功能,也可以将修改本C#工程的属性使其单独编译成一个DLL然后供其他.NET程序使用。部署起来非常方便。
小结
在本次课程中,笔者使用动态编译技术实现了VBA.NET脚本引擎,目前很多商业软件,比如OFFICE,VS.NET等等都具有二次开发用的VBA脚本技术,使用本课程介绍的知识我们也可以为应用系统配置功能强大的脚本引擎,这能比较大的提高应用系统的灵活性。脚本引擎技术是一个非常实用的软件开发技术,值得推广。
更多精彩
赞助商链接