国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

MSScriptControl.ScriptControl組件的用法實例

2020-06-26 18:40:13
字體:
供稿:網(wǎng)友
這篇文章主要介紹了MSScriptControl.ScriptControl組件的用法實例,需要的朋友可以參考下
 

Microsoft(R) Script 控件使用戶可以創(chuàng)建運行任何 ActiveX(R) scripting 引擎,例如 Microsoft(R) Visual Basic (R) Scripting Edition 或Microsoft(R) JScript(TM) 的應(yīng)用程序。用戶可以將任何 Automation 對象的對象模型添加到 Script 控件中,這樣該對象的方法和屬性就可以為 scripting 引擎所使用。通過將某個應(yīng)用程序的對象模型和某個scripting 引擎加以綜合,用戶就可以創(chuàng)建一個結(jié)合了兩方面優(yōu)點的 scripting 應(yīng)用程序。應(yīng)用程序不但具有 scripting 語言的簡單化特點,而且綜合了一種更高級、具有完整特性的專業(yè)應(yīng)用程序的對象、方法,以及屬性。

創(chuàng)建 Script 控件的實例

Microsoft Script 控件可作為一個控件或者作為一個獨立的 Automation 對象創(chuàng)建出來。該特性可以使得用任何語言書寫的應(yīng)用程序都可以用 ScriptControl 宿主任何兼容的 scripting 語言。

下面的示例可使用任意格式。請注意變量 sc 并未聲明為類型 ScriptControl,因為該控件不是,也不必要是工程中所引用的。只要 Script 控件出現(xiàn)并進行注冊,下面的代碼就可正常工作:

 

復(fù)制代碼代碼如下:

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 控件進行顯式引用,那么用戶就可以用下面的代碼創(chuàng)建 Script 控件的一個

實例: 

復(fù)制代碼代碼如下:

Dim sc As ScriptControl 

 

顯示用戶接口元素 AllowUI 屬性決定了 scripting 引擎是否可以顯示用戶接口元素。這可以應(yīng)用于 Script 控件本身,例如顯示超時消息。

這也可以應(yīng)用于使用 ActiveX scripting 接口的 scripting 引擎。例如,下面的代碼將在試圖顯示 Hello World 消息框時產(chǎn)生一個錯誤: 

復(fù)制代碼代碼如下:

ScriptControl1.AllowUI = False 
Dim strX As String 
strX = "Sub Hello" & vbCrLf & _ 
"MsgBox ""Hello World""" & vbCrLf & _ 
"End Sub" 
ScriptControl1.AddCode strX 
ScriptControl1.Run "Hello" ' 沒有允許的 UI! 

 

創(chuàng)建 Scripting 代碼

Microsoft Script 控件使用戶可以創(chuàng)建一個運行 scripting 語言,例如 VBScript 或 JScript 的應(yīng)用程序。例如,假設(shè)用戶在窗體上有一個按鈕,用戶希望在按下該按鈕時運行某些 VBScript 代碼。該按鈕稱為 Run NameMe,而用戶希望scripting 代碼運行一個叫 NameMe 的過程。意圖是當(dāng)用戶單擊 Run NameMe 按鈕時,VBScript scripting 引擎執(zhí)行 NameMe 過程。

這個 Run NameMe 按鈕使用 Script Control 的 Run 方法來執(zhí)行腳本。下面就是應(yīng)當(dāng)出現(xiàn)在 Run NameMe 按鈕的 Click 事件中的代碼: 

復(fù)制代碼代碼如下:

' Script Control 的名字是 ScriptControl1。 
Private Sub RunNameMe_Click() 
ScriptControl1.Run "NameMe" 
End Sub

 

為了創(chuàng)建該腳本所需要代碼的其余部分,請選擇一種 scripting 語言,并將代碼添加到某個過程中,然后運行該過程。

選擇一種Scripting 語言

第一步是為 Script Control 配置正確的 scripting 語言。當(dāng)在某頁上作為控件創(chuàng)建 Script Control 時,Language 屬性就被自動初始化為 "VBScript"。當(dāng)作為一個 Automation 對象來創(chuàng)建 Script Control 時,則 Language 屬性留作未初 
始化的狀態(tài),而必須由代碼作者對其進行設(shè)置。

若要將 Language 屬性設(shè)置為 JScript,可使用 Properties 窗口。用戶也可以在代碼中使用 Language 屬性,如下所 
示: 

復(fù)制代碼代碼如下:

ScriptControl1.Language = "JScript" 

其他 scripting 語言,例如 PERL 和 REXX,都不是由 Microsoft 所提供的,也可以為 Script 控件所用。

 

將代碼添加到某個過程中

在用戶運行 NameMe 過程之前,可使用 AddCode 方法將完整的過程添加到 Script 控件中。如果用戶試圖將一個不完整的過程(一個沒有 End Sub 或者 End Function 的過程)添加進去,則將會出錯。下面的代碼將過程代碼添加到 Script 
Control 中: 

復(fù)制代碼代碼如下:

' 當(dāng) ScriptRun 應(yīng)用程序加載時,添加下面的代碼 
' 將 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 控件添加過程代碼: 

復(fù)制代碼代碼如下:

Private Sub Form_Load() 
' 該代碼包含在名為 frmScript 的窗體上 
' 名為 txtScript 的 Textbox中。 
ScriptControl1.AddCode frmScript.txtScript.Text 
End Sub

 

用戶可以將參數(shù)添加到某個過程或者函數(shù)中。 

復(fù)制代碼代碼如下:

Private Sub EvalFunc() 
' 創(chuàng)建函數(shù)。 
Dim strFunction As String 
strFunction = _ 
"Function ReturnThis(x, y)" & vbCrLf & _ 
" ReturnThis = x * y" & vbCrLf & _ 
"End Function" 
' 添加代碼,然后運行該函數(shù)。 
ScriptControl1.AddCode strFunction 
MsgBox ScriptControl1.Run("ReturnThis", 3, 25) 
End Sub

 

運行過程

Run 方法運行任何已被添加到 Script 控件中的完整過程。下面的代碼段運行三個已定義過程: 

復(fù)制代碼代碼如下:

ScriptControl1.Run "FindName" 
ScriptControl1.Run "AddName" 
ScriptControl1.Run "Quit" 

 

執(zhí)行 Scripting 語句,并計算結(jié)果,用戶可以用 ExecuteStatement 方法執(zhí)行一條 scripting 語句。用戶可以用 eval 方法計算某個表達式值。在下面的示例 
中,用 ExecuteStatement 方法將值 100 賦給變量 x。下面的兩行用 eval 方法來測試語句 x = 100 和 x = 100/2。第二行返回 True;而第三行則返回 False。

 

復(fù)制代碼代碼如下:
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 代碼進行調(diào)試,可使用 Error 屬性,該屬性返回對 Error 對象的引用。利用 Error 對象,Script 控件可以返回錯誤數(shù)目和對它的 
描述,以及錯誤在 script 中出現(xiàn)的行號。

運行下面的代碼,查看 Script 控件發(fā)現(xiàn)錯誤的一個示例: 

復(fù)制代碼代碼如下:

Private Sub MyError() 
' 下面的代碼被零除導(dǎo)致 
' 一個錯誤。 
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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜兴市| 淳安县| 黄冈市| 隆林| 永新县| 赞皇县| 隆尧县| 平潭县| 新乐市| 饶河县| 临澧县| 区。| 新平| 洪洞县| 德化县| 页游| 彭阳县| 遂昌县| 泰安市| 翁源县| 郓城县| 赤城县| 庆元县| 确山县| 泰宁县| 宁晋县| 大冶市| 松阳县| 建宁县| 随州市| 广昌县| 太湖县| 永和县| 大英县| 紫金县| 呼伦贝尔市| 资兴市| 德昌县| 万载县| 仙桃市| 新津县|