到微軟的網站上下載Windows Script Control,它是一個ActiveX(R) 控件,所以在.NET中使用我Interop了一下。下載安裝完成後,新建一個C#的Windows應用程序項目,在解決方案資源管理器中選中引用節點,右鍵點擊選擇添加引用菜單,彈出添加引用對話框,單擊浏覽找到安裝Windows Script Control的目錄,選取msscript.ocx文件確定。那麼在引用節點下會增加一個MSScriptControl組件,下面是他Interop後的所有對象。
ScriptControl 對支持 ActiveX(TM) Script 的宿主 Script 引擎提供簡單接口。接下來我們對被轉化成ScriptControlClass類的ScriptControl的屬性和方法進行一些說明。
屬性
屬性 |
描述 |
AllowUI
應用於 ScriptControl 本身或 Scirpt 引擎顯示的用戶界面元素,可讀寫。
CodeObject
返回對象,該對象用於調用指定模塊的公用成員。只讀。
Error
返回 Error 對象,其中包含所發生的最後一個錯誤的相關詳細信息。只讀。
Language
設置或返回正在使用的 Script 語言名稱。可讀寫。
Modules
為 ScriptControl 對象返回模塊集合。只讀。
Procedures
返回在指定模塊中定義的過程集合。只讀。
SitehWnd
設置或返回窗口的 hWnd,通過執行 Script 代碼,此窗口用於顯示對話框和其他用戶界面元素。可讀寫。
State
設置或返回 ScriptControl 對象的模式。可讀寫
Timeout
設置或返回時間(毫秒),此時間後用戶可選擇中止 Script 代碼的執行或允許代碼繼續執行。可讀寫。
UseSafeSubset
設置或返回 Boolean 值,指明宿主應用程序是否有保密性要求。如果宿主應用程序需要安全控制,則 UseSafeSubset 為 True,否則為 False。可讀寫。
方法
方法 |
描述 |
AddCode
向模塊添加指定代碼。可多次調用 AddCode 方法
AddObject
使主機對象模型對 Script 引擎可用
Eval
計算表達式並返回結果
ExecuteStatement
執行指定的語句
Reset
放棄所有已經添加到 ScriptControl 中的 Script 代碼和對象
Run
運行指定過程
事件
事件 |
描述 |
Error
出現運行時錯誤時,發生此事件
Timeout
當超出了 Timeout 屬性指定的時間且用戶在結果對話框中選定了 End 時,發生此事件
說明:
AllowUI 屬性如果設置為False,則顯示對話框之類的語句不起作用,如在 VBScript 中
MsgBox 語句,JavaScript中的
alert等,並且如果執行的腳本超出TimeOut設置的毫秒數,也不會跳出超出時間提醒的對話框,反之則相反;重新設 置 Language 屬性會清空AddCode加載的代碼;對於TimeOut屬性,發生超時時,ScriptControl 檢查對象的 AllowUI 屬性,確定是否允許顯示用戶界面元素。
為了使控件更容易使用,用ScriptEngine類封裝一下,下面是完整代碼:
代碼
using System;
using MSScriptControl;
using System.Text;
namespace LCS.Web
{
/// <summary>
/// 腳本類型
/// </summary>
public enum ScriptLanguage
{
/// <summary>
/// JScript腳本語言
/// </summary>
JScript,
/// <summary>
/// VBscript腳本語言
/// </summary>
VBscript,
/// <summary>