a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

在C#中調用VBScript、javascript等腳本的實現代碼

2020-01-24 03:45:24
字體:
來源:轉載
供稿:網友
一.使用MSScriptControl
到微軟的網站上下載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 屬性,確定是否允許顯示用戶界面元素。
如果讀者需要更詳細的了解,可以查看MSDN文檔。
為了使控件更容易使用,我用一個ScriptEngine類包裝了一下,下面是完整代碼:
復制代碼 代碼如下:

using System;
using MSScriptControl;
using System.Text;
namespace ZZ
{
/// <summary>
/// 腳本類型
/// </summary>
public enum ScriptLanguage
{
/// <summary>
/// JScript腳本語言
/// </summary>
JScript,
/// <summary>
/// VBscript腳本語言
/// </summary>
VBscript,
/// <summary>
/// javascript腳本語言
/// </summary>
javascript
}
/// <summary>
/// 腳本運行錯誤代理
/// </summary>
public delegate void RunErrorHandler();
/// <summary>
/// 腳本運行超時代理
/// </summary>
public delegate void RunTimeoutHandler();
/// <summary>
/// ScriptEngine類
/// </summary>
public class ScriptEngine
{
private ScriptControl msc;
//定義腳本運行錯誤事件
public event RunErrorHandler RunError;
//定義腳本運行超時事件
public event RunTimeoutHandler RunTimeout;
/// <summary>
///構造函數
/// </summary>
public ScriptEngine():this(ScriptLanguage.VBscript)
{
}
/// <summary>
/// 構造函數
/// </summary>
/// <param name="language">腳本類型</param>
public ScriptEngine(ScriptLanguage language)
{
this.msc = new ScriptControlClass();
this.msc.UseSafeSubset = true;
this.msc.Language = language.ToString();
((DScriptControlSource_Event)this.msc).Error += new DScriptControlSource_ErrorEventHandler(ScriptEngine_Error);
((DScriptControlSource_Event)this.msc).Timeout += new DScriptControlSource_TimeoutEventHandler(ScriptEngine_Timeout);
}
/// <summary>
/// 運行Eval方法
/// </summary>
/// <param name="expression">表達式</param>
/// <param name="codeBody">函數體</param>
/// <returns>返回值object</returns>
public object Eval(string expression,string codeBody)
{
msc.AddCode(codeBody);
return msc.Eval(expression);
}
/// <summary>
/// 運行Eval方法
/// </summary>
/// <param name="language">腳本語言</param>
/// <param name="expression">表達式</param>
/// <param name="codeBody">函數體</param>
/// <returns>返回值object</returns>
public object Eval(ScriptLanguage language,string expression,string codeBody)
{
if(this.Language != language)
this.Language = language;
return Eval(expression,codeBody);
}
/// <summary>
/// 運行Run方法
/// </summary>
/// <param name="mainFunctionName">入口函數名稱</param>
/// <param name="parameters">參數</param>
/// <param name="codeBody">函數體</param>
/// <returns>返回值object</returns>
public object Run(string mainFunctionName,object[] parameters,string codeBody)
{
this.msc.AddCode(codeBody);
return msc.Run(mainFunctionName,ref para
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产夜夜夜| 欧美男人的天堂 | 久久国产精品99国产 | 久久亚洲天堂 | 欧美日韩国产成人在线 | 久久精品福利视频 | 国产区精品 | 亚洲成人免费视频在线观看 | 午夜影院入口 | 久久久麻豆| 国产成人久久 | 欧美日韩视频在线 | 九九热这里只有精 | 亚洲天堂久 | 色又黄又爽网站www久久 | 美日韩一区 | 亚洲精品久久久久久久久 | 国产一区免费在线 | 日韩在线免费电影 | 中文字幕 国产精品 | 久久成人在线视频 | 国产精品国产a级 | 一区二区三区视频在线免费观看 | 精品久久久久久久久久久久包黑料 | 狠狠色噜噜狠狠狠8888米奇 | 成人一区二区在线播放 | 91精品亚洲| 北条麻妃一区二区三区在线 | 精品一区二区三区四区五区 | 久久久国产一区二区三区 | 亚洲精品乱码久久久久久国产主播 | 久久韩国| 亚洲最黄视频 | 精品国产一区二区三区在线观看 | 尹人成人 | 黄色成人在线 | 国产高清在线视频 | 国产精品一区二区免费视频 | 九色91视频| 羞羞视频在线免费观看 | 亚洲成av人片一区二区梦乃 |