C#(winform)调用VbScript脚本

C#(winform)调⽤VbScript脚本解决⽅案
1.⼯程引⽤ Interop.MSScriptControl.dll
2.创建⼀个类,代码如下:
using System;
using System.Collections.Generic;叶季谌
using System.Text;
using MSScriptControl;
namespace myClass
{
///<summary>
///脚本类型
/
//</summary>
public enum ScriptLanguage
{
///<summary>
///JScript脚本语⾔
///</summary>
JScript,
江西省教育资源公共服务平台///<summary>
///VBscript脚本语⾔
///</summary>
VBScript,
/
//<summary>
///JavaScript脚本语⾔
///</summary>
JavaScript
}
///<summary>
///脚本运⾏错误代理
///</summary>
public delegate void RunErrorHandler();
///<summary>
///脚本运⾏超时代理
/
//</summary>
public delegate void RunTimeoutHandler();
///<summary>
///ScriptEngine类
///</summary>
public class clsScriptEngine
{
private ScriptControl msc;
//定义脚本运⾏错误事件
public event RunErrorHandler RunError;
//定义脚本运⾏超时事件
public event RunTimeoutHandler RunTimeout;
///<summary>
///构造函数
///</summary>
public clsScriptEngine()
: this(ScriptLanguage.VBScript)
}
///<summary>
///构造函数
///</summary>
///<param name="language">脚本类型</param>
public clsScriptEngine(ScriptLanguage language)
{
this.msc =new ScriptControlClass();
//this.msc.UseSafeSubset = true; //使⽤安全的⼦集,如果等于true则⽆法连接数据库
this.msc.Language =language.ToString();
((DScriptControlSource_Event)this.msc).Error +=new DScriptControlSource_ErrorEventHandler(ScriptEngine_Error); ((DScriptControlSource_Event)this.msc).Timeout +=new DScriptControlSource_TimeoutEventHandler(ScriptEngine_Timeout); }
澜沧江大桥///<summary>
///运⾏Eval⽅法
///</summary>
/
//<param name="expression">表达式</param>
///<param name="codeBody">函数体</param>
///<returns>返回值object</returns>
public object Eval(string expression, string codeBody)
{
msc.AddCode(codeBody);
return msc.Eval(expression);
}
///<summary>
///运⾏Eval⽅法
///</summary>
/
//<param name="language">脚本语⾔</param>
///<param name="expression">表达式</param>
///<param name="codeBody">函数体</param>
///<returns>返回值object</returns>
public object Eval(ScriptLanguage language, string expression, string codeBody)
{
if(this.Language !=language)
this.Language =language;
return Eval(expression, codeBody);
}
///<summary>
/
//运⾏Run⽅法
///</summary>
///<param name="mainFunctionName">⼊⼝函数名称</param>
///<param name="parameters">参数</param>
///<param name="codeBody">函数体</param>
///<returns>返回值object</returns>
public object Run(string mainFunctionName, object[] parameters, string codeBody)
{
this.msc.AddCode(codeBody);
return msc.Run(mainFunctionName, ref parameters);
}
/
//<summary>
///运⾏Run⽅法
///</summary>
///<param name="language">脚本语⾔</param>
///<param name="mainFunctionName">⼊⼝函数名称</param>
///<param name="parameters">参数</param>
///<param name="codeBody">函数体</param>
///<returns>返回值object</returns>
public object Run(ScriptLanguage language, string mainFunctionName, object[] parameters, string codeBody)
if(this.Language !=language)
this.Language =language;
return Run(mainFunctionName, parameters, codeBody);
}
///<summary>
///放弃所有已经添加到 ScriptControl 中的 Script 代码和对象
///</summary>
public void Reset()
{
this.msc.Reset();
}
///<summary>
///获取或设置脚本语⾔
/
//</summary>
public ScriptLanguage Language
{
get{ return(ScriptLanguage)Enum.Parse(typeof(ScriptLanguage), this.msc.Language, false); } set{ this.msc.Language =value.ToString(); }
}
高分子通报///<summary>
///获取或设置脚本执⾏时间,单位为毫秒
///</summary>
///<summary>
///设置是否显⽰⽤户界⾯元素
///</summary>
public bool AllowUI
{
get{ return this.msc.AllowUI; }
set{ this.msc.AllowUI =value; }
}
///<summary>
///宿主应⽤程序是否有保密性要求
///</summary>
public bool UseSafeSubset
{
get{ return this.msc.UseSafeSubset; }
set{ this.msc.UseSafeSubset =true; }
}
///<summary>
///RunError事件激发
///</summary>
private void OnError()
{
if(RunError !=null)
RunError();
}
///<summary>
/
//OnTimeout事件激发
///</summary>
private void OnTimeout()
{
if(RunTimeout !=null)
RunTimeout();
}
private void ScriptEngine_Error()
{
OnError();
}
private void ScriptEngine_Timeout()
{
OnTimeout();
}
}
}
3.创建⼀个名为vbs_Record.vbs 的VbScrpt,代码如下:
Function vbs_Record
(strChId,strDate,strStartTime,strStopTime,strTimeLen,strTimeLenS,strCallType,strCallResult,strCallerId,strDtmf,strRecordFile,strSessionId)
msgbox strChId &", "&strDate &", "&strStartTime &", "&strStopTime &", "&strTimeLen &", "&strTimeLenS &", "&strCallType &", "&strCallResult &", "&strCallerId &", "&strDtmf &", "&strRecordFile &", "&strSessionId
Set cn =CreateObject("ADODB.Connection")
strCn ="provider=SQLOLEDB.1;"&_
"Persist Security Info=False;"&_
"User ID=sa;"&_
"password=*******;"&_
"Initial Catalog=DataBase;"&_
"data source=(local)"
cn.Open strCn
if strCallerId<>""then
strPhoneNumber=strCallerId
else
strPhoneNumber=strDtmf
end if
str ="insert into cti_Record(SessionId,StartDate,StartTime,StopTime,TimeLen,PhoneNumber,CallType,RecordFile) values('"+strSessionId +"','"+strDate+"','"+strStartTime+"','"+strStopTime+"','"+strTimeLenS+"','"+strPhoneNumber+"','"+strCallType+"','"+ strRecordFile+"')"
cn.Execute str
黎曼函数msgbox "OK"
End function
4.C#调⽤此VB脚本,代码如下:
string strScript="";
System.IO.StreamReader myReader;
《国务院机构改革和职能转变方案》
strScriptFile="d:\\vbs_Record.vbs";
myReader=System.IO.File.OpenText(strScriptFile);
strScript=myReader.ReadLine();
while(myReader.EndOfStream==false)
{
strScript=strScript +@"
"+myReader.ReadLine();
}
clsScriptEngine scriptEngine =new clsScriptEngine();
scriptEngine.Language =(ScriptLanguage)Enum.Parse(typeof(ScriptLanguage), "VBScript");
string[] strParameter=this._strParameter.Split(',');
Object[] objParameter=new Object[12];
objParameter.SetValue(strParameter[0],0); objParameter.SetValue(strParameter[1],1); objParameter.SetValue(strParameter[2],2); objParameter.SetValue(strParameter[3],3); objParameter.SetValue(strParameter[4],4); objParameter.SetValue(strParameter[5],5); objParameter.SetValue(strParameter[6],6); objParameter.SetValue(strParameter[7],7); objParameter.SetValue(strParameter[8],8); objParameter.SetValue(strParameter[9],9); objParameter.SetValue(strParameter[10],10); objParameter.SetValue(strParameter[11],11);
scriptEngine.Reset();
scriptEngine.Run("vbs_Record", objParameter, strScript); scriptEngine =null;

本文发布于:2024-09-25 17:12:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/96593.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:脚本   是否   设置
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议