源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#利用ScriptControl动态执行JS和VBS脚本

  • 时间:2021-03-10 00:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#利用ScriptControl动态执行JS和VBS脚本
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 */ 例子:
[u]复制代码[/u] 代码如下:
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()         {             //超时事件         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部