如何使用脚本管理模块和过程集

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 184745
本文已归档。它按“原样”提供,并且不再更新。
概要
本文演示了如何使用模块和程序段代码将 Microsoft 脚本控件的属性。它还演示了如何动态确定的参数数目以及该过程是否是函数或子。
更多信息
Microsoft 脚本控件包括允许对段脚本宿主应用程序到不同的模块的功能。在默认模块"全局"都会出现。不同模块中可能包含具有相同名称的过程 (也就是过程名称具有模块范围内)。

在 Microsoft 脚本控件还包括过程属性,允许宿主应用程序动态地确定过程是否是一个函数或一个 Sub,以及它期望的参数数目。这允许宿主应用程序来提示用户提供正确数目的参数值。

脚本控件的模块属性是一个对象,该对象包含模块对象的集合。它具有以下属性和方法:
  • 计数: 的模块数。
  • Item(x): 返回单个模块对象。
  • 添加名称: 添加具有给定名称的空模块。
在模块对象具有以下属性和方法:
  • 名称: 模块名称。
  • 过程: 过程对象。
  • AddCode 代码: 将代码添加到该模块。
  • 运行的名称、 参数: 运行指定的过程。
该过程对象包含的过程对象的集合。它具有以下属性和方法:
  • 计数: 模块中过程的数目。
  • Item(x): 返回单个过程对象。
该过程对象具有以下属性和方法:
  • 名称: 过程名。
  • HasReturnValue: 表示过程是否是一个 Sub 或函数。
  • NumArgs: 该过程需要的参数的个数。
注意: 并非所有的属性和方法列出的对象是给定,不仅仅是那些与本文相关。

下面的示例提供了交互程序,阐释如何使用这些属性和方法:

要点: Microsoft 提供的编程示例只,用于说明不附带任何明示或暗示保证,其中包括但不是限于对适销性和/或针对特定用途的适用性的暗示的担保。本文假定您熟悉所演示的编程语言和工具用于创建和调试过程。

示例

  1. 在 Visual Basic 中创建新的项目 (默认情况下创建 Form1)。
  2. 在项目菜单上单击组件,然后选择 Microsoft 脚本控制 1.0 复选框。
  3. 添加脚本控件 (ScriptControl1) 文本框 (Text1) 以下三个命令按钮 (Command1,Command2,Command3) 和两个列表框 (List1,List2) 到 Form1。将文本框的多行属性设置为 TRUE。调整大小以容纳 5 行 30 个字符的文本框。
  4. 向 Form1 中添加以下代码:
          Private Sub Command1_Click()        ScriptControl1.Modules.Add Text1.Text        Form_Activate      End Sub      Private Sub Command2_Click()        ScriptControl1.Modules(List1).AddCode Text1.Text        List1_Click      End Sub      Private Sub Command3_Click()      Dim RetVal As Variant, m As Variant        Set m = ScriptControl1.Modules(List1.Text)        With m.Procedures(List2.Text)          Select Case .NumArgs            Case 0              RetVal = m.Run(List2.Text)            Case 1              RetVal = m.Run(List2.Text, 5)            Case 2              RetVal = m.Run(List2.Text, 4, 23)            Case Else              MsgBox "Procedure has too many arguments"          End Select          If .HasReturnValue Then            MsgBox List2.Text & " returned: " & RetVal          End If        End With      End Sub      Private Sub Form_Activate()      Dim m As Variant        List1.Clear        With SCriptControl1          .Language = "VBScript"          .AllowUI = True          For Each m In .Modules            List1.AddItem m.Name          Next m        End With      End Sub      Private Sub Form_Load()        Command1.Caption = "Add Module"        Command2.Caption = "Add Code"        Command3.Caption = "Run Procedure"      End Sub      Private Sub List1_Click()      Dim m As String, p As Variant        m = List1        List2.Clear        If m = "" Then Exit Sub        For Each p In ScriptControl1.Modules(m).Procedures          List2.AddItem p.Name        Next p      End Sub      Private Sub List2_Click()      Dim m As String, p As String, r As Boolean, a As Long        m = List1        p = List2        With ScriptControl1.Modules(m).Procedures(p)          r = .HasReturnValue          a = .NumArgs        End With        MsgBox m & "." & p & " has " & IIf(r, "a", "no") & _               " return value and " & a & " arguments"      End Sub						
  5. 运行 Form1。
  6. 通过键入以下内容在文本框中,单击添加模块创建一个新的模块:
          Mod2						
  7. 在文本框中键入下面的脚本:
          Function Calc(X)        Calc = X * 2      End Function						
  8. 在 $ List1,中选择全局,然后单击添加代码以将添加到全局模块。
  9. 在文本框中键入下面的脚本:
          Function Calc(X, Y)        Calc = X * Y      End Function      Sub Test()        MsgBox "The Test Sub in Module Mod2"      End Sub						
  10. 在 $ List1,中选择 Mod2,然后单击添加代码以将添加到全局模块。
  11. 单击不同的模块和过程上。当选择了该过程会显示一个消息框时,该值指示返回的值,以及数目的参数是否具有该过程花费的时间。
  12. 选择过程后单击以运行它的运行过程。该代码确定要使用的参数数目,您将看到不同的结果的消息框。
注意:
  • 全局模块名称并非始终都不同,具体取决于控件版本或本地化"全球"。使用 GlobalName 常量,而不是硬-编码单词"全球"。
  • 没有要删除单个模块或过程的方法。您必须使用脚本控件的.Clear 方法可擦除所有代码。您可以通过使用相同名称的过程.AddCode 的方法来覆盖一个过程。
参考
有关如何获得该脚本控件的信息,请参阅 Microsoft 知识库中下面的文章:
184739: 信息: 获得脚本控件的位置

有关其他信息和示例全局模块中调用过程,请参阅下面 Microsoft 知识库中相应的文章:
184740: 如何使用脚本控件的函数调用

Microsoft 脚本控制帮助主题,请执行以下操作:
   HasReturnValue Property   NumArgs Property   AddCode Method   Run Method   Modules Collection   Procedures Collection				
kbVBA500 kbVBp500 kbVBp400 kbVBp600 kbScript kbCtrl kbdse kbDSupport kbVBp

警告:本文已自动翻译

属性

文章 ID:184745 - 上次审阅时间:12/05/2015 08:36:51 - 修订版本: 4.1

Microsoft Visual Basic 5.0 学习版, Microsoft Visual Basic 6.0 学习版, Microsoft Visual Basic 5.0 专业版, Microsoft Visual Basic 6.0 专业版, Microsoft Visual Basic 5.0 企业版, Microsoft Visual Basic Enterprise Edition for Windows 6.0, Microsoft Visual Basic 4.0 标准版, Microsoft Visual Basic 4.0 专业版, Microsoft Visual Basic 4.0 32-Bit Enterprise Edition, Microsoft Visual Basic for Applications 5.0

  • kbnosurvey kbarchive kbmt kbhowto kbscript KB184745 KbMtzh
反馈