在.NET中使用脚本引擎
在应用程序中使用脚本引擎可以大大增强程序的灵活性和可扩展性,类似MS Office和 VS.NET的宏功能。微软.NET框架中Microsoft.vsa.dll中定义了脚本引擎的框架,而Microsoft.Visualbase.vsa.dll则定义了实现了VBA的脚本引擎。利用这两个DLL可以定义自己的基于VBA.NET的脚本引擎,
Microsoft.vsa.dll中定义了一些框架接口,其中比较重要的接口包括
IVsaEngine 为脚本引擎接口,所有的脚本引擎使用该接口
IVsaSite 脚本引擎通讯接口,脚本引擎接受该接口来发布一些信息
IVsaItem 为脚本引擎相关资源的项目
IVsaCodeItem 为脚本代码模块
IVsaRefrenceItem 为脚本引擎使用的外部引用对象
IVsaGlobalItem 为脚本引擎使用的全局对象模块
使用过程一般为实例化一个脚本引擎,将实现了IVsaSite的对象传给脚本引擎对象,然后使用引擎的Items的CreateItem方法添加引用,代码文本和全局对象.然后调用Compile方法编译脚本引擎,使用RUN启动引擎。
脚本引擎启动后会在当前应用程序域中根据脚本代码动态生成和加载了一个Assembly程序集,使用 IVsaEngine.Assembly可访问动态产生的程序集。
Microsoft.VisualBase.vsa.dll实现了这些接口,并实现了基于VBA.NET语法的脚本引擎。
主要对象为 VsaEngine
本程序提供一个C#写的演示程序,使用微软.NET框架1.1,该演示程序提供了一个通用的使用脚本引擎的模块,大家使用这个模块就可以非常方便的使用VBA脚本引擎来扩展自己的应用程序。
演示程序下载地址:http://files.cnblogs.com/xdesigner/VBAScriptDemo.rar
在.NET中使用脚本引擎相关推荐
- 复杂多变场景下的Groovy脚本引擎实战
作者:vivo互联网服务器团队-Gao Xiang 一.前言 因为之前在项目中使用了Groovy对业务能力进行一些扩展,效果比较好,所以简单记录分享一下,这里你可以了解: 为什么选用Groovy作为脚 ...
- c++获取一段代码的执行时间_微软IE浏览器JScript脚本引擎远程代码执行漏洞通告...
文档信息 编号 QiAnXinTI-SV-2019-0022 关键字 IE JScript RCE 远程命令执行CVE-2019-1367 发布日期 2019年09月24日 更新日期 2019年09月 ...
- Java内嵌Groovy脚本引擎进行业务规则剥离(一)
2019独角兽企业重金招聘Python工程师标准>>> 一些常见商业应用程序或企业应用,大多都会遇上业务规则在一定的条件下,允许进行一些灵活的配置,以满足业务变化的需要. 解决的方式 ...
- groovy 规则引擎 java_Java内嵌Groovy脚本引擎进行业务规则剥离(一)
一些常见商业应用程序或企业应用,大多都会遇上业务规则在一定的条件下,允许进行一些灵活的配置,以满足业务变化的需要. 解决的方式大致有以下几个方面: 最为传统的方式是java程序直接写死提供几个可调节的 ...
- 在windows程序中嵌入Lua脚本引擎--编写自己的Lua库
在<在windows程序中嵌入Lua脚本引擎--建立一个简易的"云命令"执行的系统>一文中,我提到了使用Lua的ffi库,可以让我们像写C代码一样写lua程序.这是个非 ...
- 在windows程序中嵌入Lua脚本引擎--建立一个简易的“云命令”执行的系统
在<在windows程序中嵌入Lua脚本引擎--使用VS IDE编译Luajit脚本引擎>开始处,我提到某公司被指责使用"云命令"暗杀一些软件.本文将讲述如何去模拟一个 ...
- 在windows程序中嵌入Lua脚本引擎--使用VS IDE编译Luajit脚本引擎
前些天听到一个需求:某业务方需要我们帮忙清理用户电脑上的一些废弃文件.同事完成这个逻辑的方案便是在我们程序中加入了一个很"独立"的业务逻辑:检索和删除某个程序产生的废弃文件.试想, ...
- java7 javascript引擎_Java7中脚本引擎的一般用法,共三种方法获得JavaScript引擎:名称、文件扩展名、MIME类型 | 学步园...
package com.sino.java7; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; i ...
- 因为在此系统上禁止运行脚本。有关详细信息_在弃用11年后微软终于允许IT管理员禁用IE中的JScript脚本引擎...
在本月的补丁星期二活动日中,微软已经在 Windows 系统中引入新的选项,允许系统管理员禁用 IE 浏览器中的 JScript 组件.JScript脚本引擎是一个旧组件,该组件最初于 1996 年包 ...
最新文章
- Kubernetes学习笔记一:Docker和Kubernetes的诞生
- DOM4J对于XML的用法
- linux wm虚拟机网络,复制多台虚拟机及简单的网络配置
- RabbitMQ系列-顺序消费模式和迅速消息发送模式
- Java设计流程执行器_Java进阶面试精选系列:SpringMVC+SpringBoot+Hibernate+Mybatis+设计模式...
- P8U8 IT这块出书门槛相对比较低
- php手机关闭程序,php用手机关闭电脑的方法
- 网络编程中客户端链接的合法性,socketserver模块
- BI工具选型需考虑哪些问题
- [Erlang脚印 0004] gen_server
- 餐厅点餐系统app总结
- splice方法_JavaScript数组_数组方法【一】(二十六)
- 记录wuyi公积金调用过程
- java 知网 语义 相似度,基于知网的词汇语义相似度计算-hownet!.doc
- 计算机集成声卡输出通道,电脑集成与独立声卡的差别有哪些?
- MySql in子句 效率低下优化
- codeforces1608C. Game Master题解(图论)
- 预测师:2007年将是中间商艰难的一年
- 认识 Arduino 开发板
- 查最近一条数据SQL(多条记录时)
热门文章
- python工程师-如何面试Python后端工程师?
- 零基础学编程学java还是python-学编程选Python还是Java?就业发展哪个好?
- python应该怎么自学-学习Python最正确的步骤
- python爬虫正则表达式实例-python爬虫学习三:python正则表达式
- python适合做后端开发吗-pythonWeb后端开发好呢?还是从事网络爬虫比较好呢?
- python是不是特别垃圾-Python 这语言真是混乱和原始
- python免费课程讲解-Python快速入门免费课程
- LeetCode Partition Equal Subset Sum(动态规划)
- libevent中的缓冲区(一)
- 微信小游戏开发(9)- 分包加载