C#利用ScriptControl动态执行JS和VBS脚本
2023-06-13 09:14:49 时间
属性名称
类型
备注
脚本暴露给宿主调用的对象。只读。
设置或获取脚本引擎解释的语言,例如:
脚本引擎的名称。只读。
返回模块中定义的过程的集合
在脚本中显示
设置或返回控件的状态,如果为
控件的执行脚本的超时值,-
设置或返回宿主程序是否关心安全。宿主程序的安全级别可以从此属性设置
错误对象,发生错误时,此属性返回一个错误对象
方法名称
参数
功能
往脚本引擎中加入要执行的脚本
往脚本引擎加入一个对象
表达式求值
解释并执行脚本语句
丢弃所有的对象和代码,将
运行一个指定的过程
事件名称
功能
有错误发生时激发该事件
执行过程超时时发生
/*添加COM引用:
LibraryMSScriptControl
C:\WINDOWS\system32\msscript.ocx
MicrosoftScriptControl1.0
*/
例子:
usingMSScriptControl;
namespacezz
{
///<summary>
///scriptengine类
///</summary>
publicclassScriptEngine
{
privateScriptControlmsc;
///<summary>
///构造函数
///</summary>
///<paramname="language">脚本类型,VBscript\JavaScript</param>
publicScriptEngine(stringlanguage)
{
msc=newScriptControlClass();
msc.UseSafeSubset=true;
msc.Language=language;
((DScriptControlSource_Event)msc).Error+=newDScriptControlSource_ErrorEventHandler(ScriptEngine_Error);
((DScriptControlSource_Event)msc).Timeout+=newDScriptControlSource_TimeoutEventHandler(ScriptEngine_Timeout);
}
///<summary>
///运行eval方法
///</summary>
///<paramname="expression">表达式</param>
///<returns>返回值object</returns>
publicobjecteval(stringexpression)
{
returnmsc.Eval(expression);
}
///<summary>
///运行run方法
///</summary>
///<paramname="mainfunctionname">入口函数名称</param>
///<paramname="parameters">参数</param>
///<returns>返回值object</returns>
publicobjectRun(stringmainFunctionName,object[]parameters)
{
returnmsc.Run(mainFunctionName,refparameters);
}
///<summary>
///加入要执行的脚本
///</summary>
///<paramname="Code"></param>
publicvoidAddCode(stringCode)
{
msc.AddCode(Code);
}
///<summary>
///解析并运行
///</summary>
///<paramname="Code">代码</param>
publicvoidExecuteStatement(stringCode)
{
msc.ExecuteStatement(Code);
}
///<summary>
///放弃所有已经添加到scriptcontrol中的script代码和对象
///</summary>
publicvoidReset()
{
msc.Reset();
}
///<summary>
///获取或设置脚本语言
///</summary>
publicstringLanguage
{
get{returnmsc.Language;}
set{msc.Language=value;}
}
///<summary>
///获取或设置脚本执行时间,单位为毫秒
///</summary>
publicintTimeout
{
get{return((IScriptControl)msc).Timeout;}
set{((IScriptControl)msc).Timeout=value;}
}
///<summary>
///设置是否显示用户界面元素
///</summary>
publicboolAllowUI
{
get{returnmsc.AllowUI;}
set{msc.AllowUI=value;}
}
///<summary>
///宿主应用程序是否有保密性要求
///</summary>
publicboolUseSafeSubset
{
get{returnmsc.UseSafeSubset;}
set{msc.UseSafeSubset=true;}
}
privatevoidScriptEngine_Error()
{
//错误事件
}
privatevoidScriptEngine_Timeout()
{
//超时事件
}
}
}
相关文章
- Fabric.js 使用纯色遮挡画布(前景色)
- html js 全局 变量,JS定义全局变量
- C# 多线程编程
- C#中FileStream与StreamReader/StreamWriter区别
- php 中js跳转页面跳转页面,js跳转代码_PHP页面跳转 Js页面跳转代码[通俗易懂]
- asp.net员工管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目
- js中四舍五入的方法_JS取整
- JS对象转数组_js怎么把数组转成对象
- 原生 JS 实现 HTML 转 Markdown ,html2md.js
- 使用JS连接MySQL数据库:实现化繁为简(js连接mysql数据库)
- 快速掌握JS操作MySQL数据库技巧(js操作mysql数据库)
- 使用 JS 操作 Redis:实现强大数据存储.(js调用redis)
- 使用JS技术实现Oracle数据库链接(js 链接 oracle)
- 使用JS操作Oracle数据库探索潜在可能性(js和oracle数据库)
- C操作Oracle事务处理实践(c# +oracle事物)
- 从前端JS里请求Redis资源,搭建高性能应用(前端js请求redis)
- 配置C#的系统环境变量的方法
- asp.net(c#)下各种进制间的轻松转换(2进制、8进制、10进制、16进制)
- c#适配器模式
- 关于C#.netwinform程序验证moss的集成身份认证实例
- C#WinForm中Panel实现用鼠标操作滚动条的实例方法
- C#Guid.NewGuid获得随机数
- C#实现对AES加密和解密的方法
- 解析C#中用Process类杀死进程,执行命令的深入分析
- C#中timer类的用法总结
- C#中按指定质量保存图片的实例代码
- C#窗体传值实例汇总
- C#实现排列组合算法完整实例