У меня есть программное обеспечение на C #, управляющее приложением.Приложение может быть вызвано через VBA.В документации сказано, что он реализован как сервер автоматизации OLE.
Когда мой код был еще 32-разрядным, я использовал Interop.MSScriptcontrol и вызывал команды VBA с помощью .ExecuteStatement()
.Вот пример
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 ScriptEngine
класс.Я использую метод Eval()
, но приложение не создает новый экземпляр.
Можете ли вы указать мне правильное использование класса ScriptEngine
или как я могу вызвать объект напрямую через C #создать экземпляр и передать данные в экземпляр, т.е. повторить метод S.ExecuteCommand()
.
Есть ли способ исключения классов сценариев и непосредственного вызова объекта?
Заранее спасибо,