我有一些C#软件控制应用程序。可以通过VBA在本地调用该应用程序。该文档说它是作为OLE自动化服务器实现的。
当我的代码仍然是32位时,我曾经使用Interop.MSScriptcontrol并使用.ExecuteStatement()
调用VBA命令。这是一个例子
MSScriptControl S = new MSScriptControl.ScriptControlClass();
S.Language = "VBScript";
S.ExecuteStatement("set obj = CreateObject(\"End_Application.Application\")");
S.ExecuteStatement("set Instance = obj.NewApp");
执行这4行将创建应用程序的新实例,并且比我将发送更多的S.ExecuteStatements()来控制应用程序。如果我希望应用程序返回值,则可以使用S.Eval
方法。
现在我必须迁移到64位。我发现CodeFluent's ScriptEngine
类。我正在使用Eval()
方法,但应用程序未创建新实例。
能否请您指出ScriptEngine
类的正确用法,或者如何直接通过C#调用对象以创建实例并将数据传递给实例,即复制S.ExecuteCommand()
方法。
是否有消除脚本类并直接调用对象的方法?
预先感谢