当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-10-18

    本文导语:  ScriptControl接口 属性名称 类型 备注 AllowUI BOOL 检测是否允许运行用户的接口元素。如果为False,则诸如消息框之类的界面元素不可见。 CodeObject Object 脚本暴露给宿主调用的对象。只读。 Modules Modules 宿主提供给脚...

ScriptControl接口

属性名称

类型

备注

AllowUI

BOOL

检测是否允许运行用户的接口元素。如果为False,则诸如消息框之类的界面元素不可见。

CodeObject

Object

脚本暴露给宿主调用的对象。只读。

Modules

Modules

宿主提供给脚本的组件库模块。只读。(COM组件通常都是以对象收集的形式向用户提供可以留给用户二次开发的对象集合,每一个收集即一个Modules)

Language

String

设置或获取脚本引擎解释的语言,例如:VBScript、JScript。

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:WINDOWSsystem32msscript.ocx
Microsoft Script Control 1.0
*/

例子:

代码如下:

using MSScriptControl;
namespace zz
{
    ///
    /// scriptengine类
    ///
    public class ScriptEngine
    {
        private ScriptControl msc;
        ///
        /// 构造函数
        ///
        /// 脚本类型,VBscriptJavaScript
        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);
        }
        ///
        /// 运行eval方法
        ///
        /// 表达式
        /// 返回值object
        public object eval(string expression)
        {
            return msc.Eval(expression);
        }
        ///
        /// 运行run方法
        ///
        /// 入口函数名称
        /// 参数
        /// 返回值object
        public object Run(string mainFunctionName, object[] parameters)
        {
            return msc.Run(mainFunctionName, ref parameters);
        }
        ///
        /// 加入要执行的脚本
        ///
        ///
        public void AddCode(string Code)
        {
            msc.AddCode(Code);
        }
        ///
        /// 解析并运行
        ///
        /// 代码
        public void ExecuteStatement(string Code)
        {
            msc.ExecuteStatement(Code);
        }
        ///
        /// 放弃所有已经添加到 scriptcontrol 中的 script 代码和对象
        ///
        public void Reset()
        {
            msc.Reset();
        }
        ///
        /// 获取或设置脚本语言
        ///
        public string Language
        {
            get { return msc.Language; }
            set { msc.Language = value; }
        }
        ///
        /// 获取或设置脚本执行时间,单位为毫秒
        ///
        public int Timeout
        {
            get { return ((IScriptControl)msc).Timeout; }
            set { ((IScriptControl)msc).Timeout = value; }
        }
        ///
        /// 设置是否显示用户界面元素
        ///
        public bool AllowUI
        {
            get { return msc.AllowUI; }
            set { msc.AllowUI = value; }
        }
        ///
        /// 宿主应用程序是否有保密性要求
        ///
        public bool UseSafeSubset
        {
            get { return msc.UseSafeSubset; }
            set { msc.UseSafeSubset = true; }
        }
        private void ScriptEngine_Error()
        {
            //错误事件
        }
        private void ScriptEngine_Timeout()
        {
            //超时事件
        }
    }
}

    
 
 

您可能感兴趣的文章:

  • C#利用反射来判断对象是否包含某个属性的实现方法
  • C# 利用StringBuilder提升字符串拼接性能的小例子
  • C#利用Windows自带gdi32.dll实现抓取屏幕功能实例
  • C# 利用Aspose.Words.dll将 Word 转成PDF
  • C#利用com操作excel释放进程的解决方法
  • C# 中如何利用lambda实现委托事件的挂接
  • C#利用System.Threading.Thread.Sleep即时输出信息的详解
  • C#利用ODP.net连接Oracle数据库的操作方法
  • c#利用Grahics进行图片裁剪
  • 怎么利用c#修改services的Startup type
  • C#利用Openxml读取Excel数据实例
  • c#利用Excel直接读取数据到DataGridView
  • C#利用子线程刷新主线程分享教程
  • C#中利用代理实现观察者设计模式详解
  • c#利用webmail邮件系统发送邮件示例分享
  • c#中利用委托反射将DataTable转换为实体集的代码
  • C#利用XML创建Excel文档的实现方法
  • c#利用system.net发送html格式邮件
  • 利用thrift实现js与C#通讯的实例代码
  • C#利用GDI+绘制旋转文字等效果实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何利用Bash脚本(利用awksedgrepwc等)来自动修改配置文件
  • 利用Shell脚本实现远程MySQL自动查询
  • 利用脚本自动安装SQLServer的实现步骤分析
  • 利用noesis.Javascript开源组件.Net中执行javascript脚本
  • 利用谷歌 Translate API制作自己的翻译脚本
  • linux c下利用srand和rand函数生成随机字符串
  • 请问:Linux下用C编程计算CPU利用率和内存利用率?
  • linux下利用(cat,strings,head,sed)命令生成随机字符串
  • 在2003下利用vmware安装了linux,又利用host-only方式上了网,问题如下多谢指点!!!
  • Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行
  • 大虾 紧急求助!!!!如何求得当前机子的处理器利用率和内存利用率?
  • 如何利用libpcap和Python嗅探数据包
  • 求RADIUS的动态分配IP的问题(利用IPPOOL)
  • windows堆栈溢出利用的七种方式
  • iowait和cpu利用率的权衡问题
  • 利用java.net.URLConnection上传文件
  • Qt中利用槽如何来传递参数
  • 浏览器漏洞利用框架 BeEF
  • 怎么样利用Socket进行Java网络编程
  • 请问如何编程获得CPU利用率?(空)
  • 如何利用Linux安装盘制作启动盘?
  • 谁知道linux/unix下利用Schema读取校验xml的开源代码,给一个链接,谢谢!
  • 怎样实现利用fprintf,输出定长字串,位数不足时在左侧填入指定字符填充。。
  • CPU、内存、数据库利用率监控
  • 怎样利用u-boot烧写??
  • 根目录 / 文件利用过高, 啥办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3