예제 #1
0
        public void ExecuteFunction(string functionName, params object[] parameters)
        {
            IZeusContext context = null;

            try
            {
                context = MicrosoftScriptControl.Eval("context") as IZeusContext;
                object tmpReturn = MicrosoftScriptControl.Run(functionName, ref parameters);
            }
            catch (System.Runtime.InteropServices.COMException)
            {
                MicrosoftScriptError error = new MicrosoftScriptError(MicrosoftScriptControl.Error, context);
                this.AddError(error);
            }
        }
예제 #2
0
        public void EngineExecuteGuiCode(IZeusCodeSegment segment, IZeusContext context)
        {
            // If the template has an interface block, execute it
            if (!segment.IsEmpty)
            {
                if (!HasErrors)
                {
                    int step = 0;
                    try
                    {
                        MicrosoftScriptControl.Timeout       = (_timeout == -1 ? MSScriptControl.ScriptControlConstants.NoTimeout : (_timeout * 1000));
                        MicrosoftScriptControl.Language      = segment.Language;
                        MicrosoftScriptControl.AllowUI       = true;
                        MicrosoftScriptControl.UseSafeSubset = false;
                        MicrosoftScriptControl.Reset();
                        MicrosoftScriptControl.AddObject("input", context.Input, true);
                        MicrosoftScriptControl.AddObject("context", context, true);

                        foreach (string key in context.Objects.Keys)
                        {
                            if (key != "input")
                            {
                                MicrosoftScriptControl.AddObject(key, context.Objects[key], true);
                            }
                        }

                        step = 1;

                        MicrosoftScriptControl.AddCode(segment.Code);

                        step = 2;

                        object[] paramList = new object[0];

                        object tmpReturn = MicrosoftScriptControl.Run(GUI_ENTRY_NAME, ref paramList);

                        if (context.Gui.ShowGui || context.Gui.ForceDisplay)
                        {
                            OnShowGUI(context.Gui);
                        }
                    }
                    catch (System.Runtime.InteropServices.COMException)
                    {
                        MicrosoftScriptError error = new MicrosoftScriptError(MicrosoftScriptControl.Error, context);
                        if (step < 2)
                        {
                            error.IsRuntime = false;
                        }
                        this.AddError(error);
                    }
                    catch (Exception ex)
                    {
                        if ((MicrosoftScriptControl.Error == null) || (MicrosoftScriptControl.Error.Description == null))
                        {
                            throw ex;
                        }
                        else
                        {
                            MicrosoftScriptError error = new MicrosoftScriptError(MicrosoftScriptControl.Error, context);
                            if (step < 2)
                            {
                                error.IsRuntime = false;
                            }
                            this.AddError(error);
                        }
                    }

                    MicrosoftScriptControl.Reset();
                }
            }
        }
예제 #3
0
 public void Cleanup()
 {
     MicrosoftScriptControl.Language = "JScript";
     MicrosoftScriptControl.Reset();
 }
예제 #4
0
        public void EngineExecuteCode(IZeusCodeSegment segment, IZeusContext context)
        {
            // If the segment isn't empty, execute it
            if (!segment.IsEmpty)
            {
                if (!HasErrors)
                {
                    int step = 0;
                    try
                    {
                        if (context.ExecutionDepth > 1)
                        {
                            ScriptStack.Push(new MSScriptControl.ScriptControl());
                        }

                        MicrosoftScriptControl.Timeout       = (_timeout == -1 ? MSScriptControl.ScriptControlConstants.NoTimeout : (_timeout * 1000));
                        MicrosoftScriptControl.Language      = segment.Language;
                        MicrosoftScriptControl.AllowUI       = true;
                        MicrosoftScriptControl.UseSafeSubset = false;

                        MicrosoftScriptControl.AddObject("output", context.Output, true);
                        MicrosoftScriptControl.AddObject("input", context.Input, true);
                        MicrosoftScriptControl.AddObject("context", context, true);

                        foreach (string key in context.Objects.Keys)
                        {
                            if ((key != "output") && (key != "input"))
                            {
                                MicrosoftScriptControl.AddObject(key, context.Objects[key], true);
                            }
                        }

                        string entryCode = this.ScriptingEntryCall(segment.Language) as String;
                        string entryCall = BODY_ENTRY_NAME;

                        step = 1;
                        MicrosoftScriptControl.AddCode(segment.Code);
                        MicrosoftScriptControl.AddCode(entryCode);
                        step = 2;

                        object[] paramList = new object[0];

                        object tmpReturn = MicrosoftScriptControl.Run(entryCall, ref paramList);
                    }
                    catch (System.Runtime.InteropServices.COMException)
                    {
                        MicrosoftScriptError error = new MicrosoftScriptError(MicrosoftScriptControl.Error, context);
                        if (step < 2)
                        {
                            error.IsRuntime = false;
                        }
                        this.AddError(error);
                    }
                    catch (Exception ex)
                    {
                        if ((MicrosoftScriptControl.Error == null) || (MicrosoftScriptControl.Error.Description == null))
                        {
                            throw ex;
                        }
                        else
                        {
                            MicrosoftScriptError error = new MicrosoftScriptError(MicrosoftScriptControl.Error, context);
                            if (step < 2)
                            {
                                error.IsRuntime = false;
                            }
                            this.AddError(error);
                        }
                    }
                    finally
                    {
                        MicrosoftScriptControl.Reset();
                        if (context.ExecutionDepth > 1)
                        {
                            ScriptStack.Pop();
                        }
                    }
                }
            }
        }