/// <summary> /// Runs the named macro. /// </summary> public void RunMacro(string s) { try { string sFile = GetMacroFile(); VM vm = new VM(); vm.InitializeVM(); vm.RegisterDotNetType(typeof (HeronEditor)); vm.RegisterDotNetType(typeof(CodeEditControl)); vm.RegisterDotNetType(typeof(Preferences)); //vm.RegisterAssembly(Assembly.GetExecutingAssembly()); vm.RegisterCommonWinFormTypes(); ModuleDefn m = vm.LoadModule(sFile); vm.LoadDependentModules(sFile); vm.ResolveTypes (); ModuleInstance mi = m.Instantiate(vm, new HeronValue[] { }, null) as ModuleInstance; vm.RunMeta(mi); HeronValue f = mi.GetFieldOrMethod("RunMacro"); if (f == null) throw new Exception("Could not find a 'Main' method to run"); f.Apply(vm, new HeronValue[] { DotNetObject.Marshal(this), DotNetObject.Marshal(s) }); } catch (Exception e) { MessageBox.Show("Error during macro: " + e.Message); } }