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

首頁 > 編程 > C# > 正文

C#利用ScriptControl動態執行JS和VBS腳本

2020-01-24 03:29:30
字體:
來源:轉載
供稿:網友
ScriptControl接口

屬性名稱

類型

備注

AllowUI

BOOL

檢測是否允許運行用戶的接口元素。如果為False,則諸如消息框之類的界面元素不可見。

CodeObject

Object

腳本暴露給宿主調用的對象。只讀。

Modules

Modules

宿主提供給腳本的組件庫模塊。只讀。(COM組件通常都是以對象收集的形式向用戶提供可以留給用戶二次開發的對象集合,每一個收集即一個Modules

Language

String

設置或獲取腳本引擎解釋的語言,例如:VBScriptJScript

Name

String

腳本引擎的名稱。只讀。

Procedures

Procedures

返回模塊中定義的過程的集合

SitehWnd

HWND

在腳本中顯示UI的父窗口句柄

State

Enum

設置或返回控件的狀態,如果為0,控件只執行語句但不轉發事件,為1則為加入的本控件接受的對象轉發事件。

Timeout

Long

控件的執行腳本的超時值,-1表示不超時

UseSafeSubset

BOOL

設置或返回宿主程序是否關心安全。宿主程序的安全級別可以從此屬性設置

Error

Error

錯誤對象,發生錯誤時,此屬性返回一個錯誤對象

方法名稱

參數

功能

AddCode

Code As String

往腳本引擎中加入要執行的腳本

AddObject

Name As String, Object As Object, [AddMembers As Boolean = False]

往腳本引擎加入一個對象,以便在腳本中可以使用該對象提供的方法等。

Eval

Expression As String

表達式求值

ExecuteStatement

Statement As String

解釋并執行腳本語句

Reset

丟棄所有的對象和代碼,將State屬性置0

Run

ProcedureName As String, ParamArray Parameters() As Variant

運行一個指定的過程

事件名稱

功能

Error

有錯誤發生時激發該事件

TimeOut

執行過程超時時發生


/* 添加COM引用:
Library MSScriptControl
C:/WINDOWS/system32/msscript.ocx
Microsoft Script Control 1.0
*/

例子:

復制代碼 代碼如下:

using MSScriptControl;
namespace zz
{
    /// <summary>
    /// scriptengine類
    /// </summary>
    public class ScriptEngine
    {
        private ScriptControl msc;
        /// <summary>
        /// 構造函數
        /// </summary>
        /// <param name="language">腳本類型,VBscript/JavaScript</param>
        public ScriptEngine(string language)
        {
            msc = new ScriptControlClass();
            msc.UseSafeSubset = true;
            msc.Language = language;
            ((DScriptControlSource_Event)msc).Error += new DScriptControlSource_ErrorEventHandler(ScriptEngine_Error);
            ((DScriptControlSource_Event)msc).Timeout += new DScriptControlSource_TimeoutEventHandler(ScriptEngine_Timeout);
        }
        /// <summary>
        /// 運行eval方法
        /// </summary>
        /// <param name="expression">表達式</param>
        /// <returns>返回值object</returns>
        public object eval(string expression)
        {
            return msc.Eval(expression);
        }
        /// <summary>
        /// 運行run方法
        /// </summary>
        /// <param name="mainfunctionname">入口函數名稱</param>
        /// <param name="parameters">參數</param>
        /// <returns>返回值object</returns>
        public object Run(string mainFunctionName, object[] parameters)
        {
            return msc.Run(mainFunctionName, ref parameters);
        }
        /// <summary>
        /// 加入要執行的腳本
        /// </summary>
        /// <param name="Code"></param>
        public void AddCode(string Code)
        {
            msc.AddCode(Code);
        }
        /// <summary>
        /// 解析并運行
        /// </summary>
        /// <param name="Code">代碼</param>
        public void ExecuteStatement(string Code)
        {
            msc.ExecuteStatement(Code);
        }
        /// <summary>
        /// 放棄所有已經添加到 scriptcontrol 中的 script 代碼和對象
        /// </summary>
        public void Reset()
        {
            msc.Reset();
        }
        /// <summary>
        /// 獲取或設置腳本語言
        /// </summary>
        public string Language
        {
            get { return msc.Language; }
            set { msc.Language = value; }
        }
        /// <summary>
        /// 獲取或設置腳本執行時間,單位為毫秒
        /// </summary>
        public int Timeout
        {
            get { return ((IScriptControl)msc).Timeout; }
            set { ((IScriptControl)msc).Timeout = value; }
        }
        /// <summary>
        /// 設置是否顯示用戶界面元素
        /// </summary>
        public bool AllowUI
        {
            get { return msc.AllowUI; }
            set { msc.AllowUI = value; }
        }
        /// <summary>
        /// 宿主應用程序是否有保密性要求
        /// </summary>
        public bool UseSafeSubset
        {
            get { return msc.UseSafeSubset; }
            set { msc.UseSafeSubset = true; }
        }
        private void ScriptEngine_Error()
        {
            //錯誤事件
        }
        private void ScriptEngine_Timeout()
        {
            //超時事件
        }
    }
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产精品99久久久久久老狼 | 91一区 | 91亚洲一区| 国产日韩91| 日韩av在线一区二区三区 | 久久久久久久一区 | 国产精品一任线免费观看 | 亚洲精品久久 | 国产 日韩 欧美 制服 另类 | 久久99爱视频 | 日韩精品一区二区三区在线观看 | 日韩不卡一区 | 99看片| 亚洲综合视频 | 久久人人国产 | 日批免费视频 | 在线日韩视频 | 成人免费在线网址 | 超碰97在线人人 | 三级日韩 | 午夜久久久久 | 成人免费观看cn | 99精品久久久久久 | 一区在线视频 | 午夜精品一区二区三区免费视频 | 一本色道久久综合亚洲精品不卡 | 四虎影视在线播放 | 精品国产乱码久久久久久1区2区 | 天天操狠狠操网站 | 国产精品综合一区二区 | 久久精品无码一区二区日韩av | 久久久精品视频在线观看 | 国产精品久久国产愉拍 | a天堂在线观看 | 欧美激情综合五月色丁香小说 | 欧美日韩精品一区二区 | 久久99一区二区 | 91精品久久久久久久久久 | 大黑人交xxx极品hd | 污网站在线播放 | 国产精品亚洲成在人线 |