Microsoft(R) Script 控件使用户可以创建运行任何 ActiveX(R) scripting 引擎,例如 Microsoft(R) Visual Basic
(R) Scripting Edition 或Microsoft(R) JScript(TM) 的应用程序。用户可以将任何 Automation 对象的对象模型添加
到 Script 控件中,这样该对象的方法和属性就可以为 scripting 引擎所使用。通过将某个应用程序的对象模型和某个
scripting 引擎加以综合,用户就可以创建一个结合了两方面优点的 scripting 应用程序。应用程序不但具有
scripting 语言的简单化特点,而且综合了一种更高级、具有完整特性的专业应用程序的对象、方法,以及属性。
创建Script 控件的实例,Microsoft Script 控件可作为一个控件或者作为一个独立的 Automation 对象创建出来。该特性可以使得用任何语言书写的应用程序都可以用ScriptControl 宿主任何兼容的scripting 语言。
下面的示例可使用任意格式。请注意变量sc 并未声明为类型ScriptControl,因为该控件不是,也不必要是工程中所引
用的。只要 Script 控件出现并进行注册,下面的代码就可正常工作:
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 控件的一个
实例:
Dim sc As ScriptControl
显示用户接口元素
AllowUI 属性决定了 scripting 引擎是否可以显示用户接口元素。这可以应用于 Script 控件本身,例如显示超时消息。
这也可以应用于使用 ActiveX scripting 接口的 scripting 引擎。例如,下面的代码将在试图显示 Hello World 消息框
时产生一个错误:
ScriptControl1.AllowUI = False
Dim strX As String
strX = "Sub Hello" & vbCrLf & _
"MsgBox ""Hello World""" & vbCrLf & _
"End Sub"
ScriptControl1.AddCode strX
ScriptControl1.Run "Hello" ' 没有允许的 UI!
创建 Scripting 代码
Microsoft Script 控件使用户可以创建一个运行 scripting 语言,例如 VBScript 或 JScript 的应用程序。例如,假设
用户在窗体上有一个按钮,用户希望在按下该按钮时运行某些 VBScript 代码。该按钮称为 Run NameMe,而用户希望
scripting 代码运行一个叫 NameMe 的过程。意图是当用户单击 Run NameMe 按钮时,VBScript scripting 引擎执行
NameMe 过程。
这个 Run NameMe 按钮使用 Script Control 的 Run 方法来执行脚本。下面就是应当出现在 Run NameMe 按钮的 Click
事件中的代码:
' Script Control 的名字是 ScriptControl1。
Private Sub RunNameMe_Click()
ScriptControl1.Run "NameMe"
End Sub
为了创建该脚本所需要代码的其余部分,请选择一种 scripting 语言,并将代码添加到某个过程中,然后运行该过程。
选择一种 Scripting 语言
第一步是为 Script Control 配置正确的 scripting 语言。当在某页上作为控件创建 Script Control 时,Language 属
性就被自动初始化为 "VBScript"。当作为一个 Automation 对象来创建 Script Control 时,则 Language 属性留作未初
始化的状态,而必须由代码作者对其进行设置。
若要将 Language 属性设置为 JScript,可使用 Properties 窗口。用户也可以在代码中使用 Language 属性,如下所
示:
ScriptControl1.Language = "JScript"
其他 scripting 语言,例如 PERL 和 REXX,都不是由 Microsoft 所提供的,也可以为 Script 控件所用。
将代码添加到某个过程中
在用户运行 NameMe 过程之前,可使用 AddCode 方法将完整的过程添加到 Script 控件中。如果用户试图将一个不完整的
过程(一个没有 End Sub 或者 End Function 的过程)添加进去,则将会出错。下面的代码将过程代码添加到 Script
Control 中:
' 当 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 控件添加过程代码:
Private Sub Form_Load()
' 该代码包含在名为 frmScript 的窗体上
' 名为 txtScript 的 Textbox中。
ScriptControl1.AddCode frmScript.txtScript.Text
End Sub
用户可以将参数添加到某个过程或者函数中。
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
运行过程
Run 方法运行任何已被添加到 Script 控件中的完整过程。下面的代码段运行三个已定义过程:
ScriptControl1.Run "FindName"
ScriptControl1.Run "AddName"
ScriptControl1.Run "Quit"
执行 Scripting 语句,并计算结果
用户可以用 ExecuteStatement 方法执行一条 scripting 语句。用户可以用 eval 方法计算某个表达式值。在下面的示例
中,用 ExecuteStatement 方法将值 100 赋给变量 x。下面的两行用 eval 方法来测试语句 x = 100 和 x = 100/2。第
二行返回 True;而第三行则返回 False。
Private Sub TryThis()
ScriptControl1.ExecuteStatement "x = 100"
MsgBox ScriptControl1.Eval("x = 100") ' 返回 True
MsgBox ScriptControl1.Eval("x = 100/2") ' 返回 False
End Sub
使用 Error 属性
Script 控件错误有两个可能来源:Script 控件自身,或者该控件试图运行的 script。为了对 scripting 代码进行调
试,可使用 Error 属性,该属性返回对 Error 对象的引用。利用 Error 对象,Script 控件可以返回错误数目和对它的
描述,以及错误在 script 中出现的行号。
运行下面的代码,查看 Script 控件发现错误的一个示例:
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
分享到:
相关推荐
VB使用ScriptControl控件调用事件过程,以一个人力资源管理系统的界面为例进行演示,如何在VB环境下使用ScriptControl控件调用事件过程。将VB资源管理器中的字符串添加到菜单中,添加树状菜单等。 运行环境:...
WINDOWS SCRIPT HOST对象在VB中的使用 25 , 25.txt 安装向导生成程序组并建立多个程序项 26 , 26.txt 保存复选框选项 27 , 27.txt 不用OCX来创建自己的控件(一) 28 , 28.txt 成组更新控件属性 29 , 29.txt 创建...
VB Script提供丰富的内置函数,如InStr()用于查找子字符串,Len()用于计算字符串长度,Sqr()用于计算平方根等。此外,还可以定义自定义过程(Sub或Function),提高代码复用性和模块化。 8. **WScript对象** ...
在众多编程语言中,Visual Basic (简称 VB) 是一个不错的选择,尤其是 VB6.0,它不仅拥有强大的图形界面设计能力,而且内置了 ScriptControl 控件,这使得处理字符串和执行脚本变得更加简单。因此,我们选择 VB6.0 ...
在 VB6.0 中,可以通过使用 `ScriptControl` 控件来执行动态生成的脚本语句。这是一种非常实用的功能,可以用于动态生成并执行各种脚本语言(如 VBScript 或 JScript)的代码。 **示例代码:** ```vb Dim Statement...
需要注意的是,SQL查询语句中的表名和字段名应根据实际数据库结构进行调整,同时确保连接字符串中的DSN、uid和pwd等信息正确无误。此外,为了提高性能和避免数据冲突,可以考虑使用参数化查询和适当调整游标类型。 ...
在工业自动化领域,西门子的WINCC(Windows Control Center)是一种广泛使用的SCADA(Supervisory Control and Data Acquisition)系统,用于监控和数据采集。本文档主要关注如何在WINCC中利用WinSock控件进行TCP/IP...
在VB中,可以使用内置的ScriptControl对象解析JSON字符串。 4. **UI界面设计**: - 客户端的用户界面应包含一个文件浏览器视图,用于显示服务端的目录结构。可以使用TreeView控件来实现,每个节点代表一个目录或...
VB中可以调用`CreateObject`函数来创建并使用第三方的转换组件,如Microsoft的`ScriptControl`对象,或者第三方的转换库,例如`JLConversion`。这些组件通常提供了转换方法,如`ConvertToSimplifiedChinese`和`...
输入英文字符串,Agent就能通过声卡、音箱“说话”。Agent的当前版本尚不具备支持 中文语音合成功能,所以只能以.wav文件的形式播放中文。使用时可以将想要说的中文 句子预先录好,以.wav形式存储,在程序中调用...
3. 使用ScriptControl控件将随机生成的字符串转换为可执行的计算表达式。 4. 利用初级、中级、高级三个级别的窗体调用模块中的函数,同时结合时钟控件进行计时,并计算得分。 程序流程可能如下: 1. 用户登录系统。...
这个函数可以根据输入的函数字符串Str1动态生成VBScript代码并执行,从而计算任何给定函数的值。 接下来,我们讨论如何解决高次方程。在土木工程问题中,常常需要寻找高次方程的正实数解。例如,解决x^2-2=0这样的...
- `<%@Page Language="C#" CodeFile="Page1.ascx.cs" Inherits="Control1" %>`, `<%@Page Language="VB" CodeFile="Page1.ascx.vb" Inherits="Control1" %>`, `<%@Control Language="C#" CodeFile="Page1.ascx.cs" ...
8.9 使用InStr和 InStrRev函数在字符串里搜索子字符串 234 8.10 LTrim$、RTrim$和Trim$ 235 8.11 String$和 Space$ 236 8.12 使用Replace 函数替换子字符串 237 8.13 使用StrReverse函数反转字符串 237 8.14 转换...
| vb/javaScript | ScriptControl | | windowsmediaPlayer | WMPlayer.OCX | | Outlook | Outlook.Application | | Visio | Visio.Application | | DAO | DAO.PrivateDBEngine.35 | | MultiFace | MultiFace.Face | ...
4. `CoordString`: 包含形状坐标的数据字符串,用于定义地图区域的具体形状。 5. `Href`: 地图区域的链接目标,当用户点击该区域时,浏览器会跳转到此URL。 6. `Alt`: 当鼠标悬停在地图区域上时显示的文本。 下面是...
这个方法是整个页面`Page`和所有控件的一个方法,因此它可以被所有控件使用。例如,可以对某个特定控件如`DataList1.DataBind()`进行绑定,也可以通过`Page.DataBind()`来绑定整个页面。 ### 3. 实例:将数组数据...