源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

MSScriptControl.ScriptControl组件的用法实例

  • 时间:2022-05-24 13:36 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:MSScriptControl.ScriptControl组件的用法实例
Microsoft(R) Script 控件使用户可以创建运行任何 ActiveX(R) scripting 引擎,例如 Microsoft(R) Visual Basic (R) Scripting Edition 或Microsoft(R) JScript(TM) 的应用程序。用户可以将任何 Automation 对象的对象模型添加到 Script 控件中,这样该对象的方法和属性就可以为 scripting 引擎所使用。通过将某个应用程序的对象模型和某个scripting 引擎加以综合,用户就可以创建一个结合了两方面优点的 scripting 应用程序。应用程序不但具有 scripting 语言的简单化特点,而且综合了一种更高级、具有完整特性的专业应用程序的对象、方法,以及属性。 [b]创建 Script 控件的实例 [/b] Microsoft Script 控件可作为一个控件或者作为一个独立的 Automation 对象创建出来。该特性可以使得用任何语言书写的应用程序都可以用 ScriptControl 宿主任何兼容的 scripting 语言。 下面的示例可使用任意格式。请注意变量 sc 并未声明为类型 ScriptControl,因为该控件不是,也不必要是工程中所引用的。只要 Script 控件出现并进行注册,下面的代码就可正常工作:
[u]复制代码[/u] 代码如下:
Private Sub Command1_Click() Dim sc Dim strProgram As String strProgram = "Sub Main" & vbCrLf & _ "MsgBox ""Hello World""" & vbCrLf & _ "End Sub" Set sc = CreateObject("ScriptControl") sc.language = "VBScript" sc.addcode strProgram sc.run "Main" End Sub
如果用户在自己的工程中的引用中对 Script 控件进行显式引用,那么用户就可以用下面的代码创建 Script 控件的一个 实例:
[u]复制代码[/u] 代码如下:
Dim sc As ScriptControl
显示用户接口元素 AllowUI 属性决定了 scripting 引擎是否可以显示用户接口元素。这可以应用于 Script 控件本身,例如显示超时消息。 这也可以应用于使用 ActiveX scripting 接口的 scripting 引擎。例如,下面的代码将在试图显示 Hello World 消息框时产生一个错误:
[u]复制代码[/u] 代码如下:
ScriptControl1.AllowUI = False Dim strX As String strX = "Sub Hello" & vbCrLf & _ "MsgBox ""Hello World""" & vbCrLf & _ "End Sub" ScriptControl1.AddCode strX ScriptControl1.Run "Hello" ' 没有允许的 UI!
[b]创建 Scripting 代码 [/b] Microsoft Script 控件使用户可以创建一个运行 scripting 语言,例如 VBScript 或 JScript 的应用程序。例如,假设用户在窗体上有一个按钮,用户希望在按下该按钮时运行某些 VBScript 代码。该按钮称为 Run NameMe,而用户希望scripting 代码运行一个叫 NameMe 的过程。意图是当用户单击 Run NameMe 按钮时,VBScript scripting 引擎执行 NameMe 过程。 这个 Run NameMe 按钮使用 Script Control 的 Run 方法来执行脚本。下面就是应当出现在 Run NameMe 按钮的 Click 事件中的代码:
[u]复制代码[/u] 代码如下:
' Script Control 的名字是 ScriptControl1。 Private Sub RunNameMe_Click() ScriptControl1.Run "NameMe" End Sub
为了创建该脚本所需要代码的其余部分,请选择一种 scripting 语言,并将代码添加到某个过程中,然后运行该过程。 [b]选择一种Scripting 语言[/b] 第一步是为 Script Control 配置正确的 scripting 语言。当在某页上作为控件创建 Script Control 时,Language 属性就被自动初始化为 "VBScript"。当作为一个 Automation 对象来创建 Script Control 时,则 Language 属性留作未初 始化的状态,而必须由代码作者对其进行设置。 若要将 Language 属性设置为 JScript,可使用 Properties 窗口。用户也可以在代码中使用 Language 属性,如下所 示:
[u]复制代码[/u] 代码如下:
ScriptControl1.Language = "JScript"
其他 scripting 语言,例如 PERL 和 REXX,都不是由 Microsoft 所提供的,也可以为 Script 控件所用。 [b]将代码添加到某个过程中 [/b] 在用户运行 NameMe 过程之前,可使用 AddCode 方法将完整的过程添加到 Script 控件中。如果用户试图将一个不完整的过程(一个没有 End Sub 或者 End Function 的过程)添加进去,则将会出错。下面的代码将过程代码添加到 Script Control 中:
[u]复制代码[/u] 代码如下:
' 当 ScriptRun 应用程序加载时,添加下面的代码 ' 将 NameMe 过程添加到 Control 中。 Private Sub Form_Load() Dim strCode As String strCode = "Sub NameMe()" & vbCrLf & _ " Dim strName As String" & vbCrLf & _ " strName = InputBox(""Name?"")" & vbCrLf & _ " MsgBox ""Your name is "" & strName" & vbcrLf & _ "End Sub" ScriptControl1.AddCode strCode End Sub
另外,用户也可以从某个 TextBox 控件添加过程代码:
[u]复制代码[/u] 代码如下:
Private Sub Form_Load() ' 该代码包含在名为 frmScript 的窗体上 ' 名为 txtScript 的 Textbox中。 ScriptControl1.AddCode frmScript.txtScript.Text End Sub
用户可以将参数添加到某个过程或者函数中。
[u]复制代码[/u] 代码如下:
Private Sub EvalFunc() ' 创建函数。 Dim strFunction As String strFunction = _ "Function ReturnThis(x, y)" & vbCrLf & _ " ReturnThis = x * y" & vbCrLf & _ "End Function" ' 添加代码,然后运行该函数。 ScriptControl1.AddCode strFunction MsgBox ScriptControl1.Run("ReturnThis", 3, 25) End Sub
[b]运行过程 [/b] Run 方法运行任何已被添加到 Script 控件中的完整过程。下面的代码段运行三个已定义过程:
[u]复制代码[/u] 代码如下:
ScriptControl1.Run "FindName" ScriptControl1.Run "AddName" ScriptControl1.Run "Quit"
执行 Scripting 语句,并计算结果,用户可以用 ExecuteStatement 方法执行一条 scripting 语句。用户可以用 eval 方法计算某个表达式值。在下面的示例 中,用 ExecuteStatement 方法将值 100 赋给变量 x。下面的两行用 eval 方法来测试语句 x = 100 和 x = 100/2。第二行返回 True;而第三行则返回 False。
[u]复制代码[/u] 代码如下:
Private Sub TryThis() ScriptControl1.ExecuteStatement "x = 100" MsgBox ScriptControl1.Eval("x = 100") ' 返回 True MsgBox ScriptControl1.Eval("x = 100/2") ' 返回 False End Sub
[b]使用 Error 属性 [/b] Script 控件错误有两个可能来源:Script 控件自身,或者该控件试图运行的 script。为了对 scripting 代码进行调试,可使用 Error 属性,该属性返回对 Error 对象的引用。利用 Error 对象,Script 控件可以返回错误数目和对它的 描述,以及错误在 script 中出现的行号。 运行下面的代码,查看 Script 控件发现错误的一个示例:
[u]复制代码[/u] 代码如下:
Private Sub MyError() ' 下面的代码被零除导致 ' 一个错误。 Dim strCode As String strCode = _ "Sub DivideByZero()" & vbCrLf & _ "Dim prime" & vbCrLf & _ "prime = 3" & vbCrLf & _ "MsgBox prime/0" & vbCrLf & _ "End Sub" On Error GoTo scError With ScriptControl1 .AddCode strCode .Run "DivideByZero" End With Exit Sub scError: ' 使用 Error 对象向用户通告 ' 错误,以及出错行。 Debug.Print ScriptControl1.Error.Number & _ ":" & ScriptControl1.Error.Description & _ " in line " & ScriptControl1.Error.Line Exit Sub End Sub
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部