private void Form1_Load(object sender, EventArgs e) { // Initialize Language with this as the IHost ScriptingLanguage.SetHost(this); // Create and initialize BasicNoUIObj object basicNoUIObj = new WinWrap.Basic.BasicNoUIObj(); basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.Disconnecting += basicNoUIObj_Disconnecting; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new System.Guid("00000000-0000-0000-0000-000000000000"); basicNoUIObj.Initialize(); // automatically disconnect BasicNoUIObj when form closes basicNoUIObj.AttachToForm(this, WinWrap.Basic.ManageConstants.All); // Extend WinWrap Basic scripts with Examples.Extensions assembly // Add "Imports Examples.Extensions" to all WinWrap Basic scripts // Add "Imports Examples.Extensions.ScriptingLanguage" all WinWrap Basic scripts basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) { LogError(basicNoUIObj.Error); buttonRunScript.Enabled = false; } }
void basicNoUIObj_End(object sender, EventArgs e) { WinWrap.Basic.BasicNoUIObj basicNoUIObj = sender as WinWrap.Basic.BasicNoUIObj; if (timedout_ && basicNoUIObj.Error == null) { // timedout LogError(Examples.SharedSource.WinWrapBasic.FormatTimeoutError(basicNoUIObj, timedout_)); } }
void basicNoUIObj_DoEvents(object sender, EventArgs e) { if (DateTime.Now >= timelimit_) { timedout_ = true; WinWrap.Basic.BasicNoUIObj basicNoUIObj = sender as WinWrap.Basic.BasicNoUIObj; // time timelimit has been reached, terminate the script basicNoUIObj.Run = false; } }
void basicNoUIObj_Pause_(object sender, EventArgs e) { WinWrap.Basic.BasicNoUIObj basicNoUIObj = sender as WinWrap.Basic.BasicNoUIObj; if (basicNoUIObj.Error == null) { LogError(Examples.SharedSource.WinWrapBasic.FormatTimeoutError(basicNoUIObj, timedout_)); } // Script execution has paused, terminate the script basicNoUIObj.Run = false; }
public static string FormatTimeoutError(WinWrap.Basic.BasicNoUIObj basicNoUIObj, bool timedout) { // get the line that's executing right now var sb = new StringBuilder(); sb.AppendLine((string)basicNoUIObj.Query("GetStack")["Caller[0]"]); sb.AppendLine(timedout ? "time exceeded" : "paused" + ", terminating script."); sb.AppendLine(""); return(sb.ToString()); }
private void ExecuteWinWrapBasic() { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new System.Guid("00000000-0000-0000-0000-000000000000"); basicNoUIObj.Initialize(); // Extend WinWrap Basic scripts with Examples.Extensions assembly // Add "Imports Examples.Extensions" to all WinWrap Basic scripts // Add "Imports Examples.Extensions.ScriptingLanguage" all WinWrap Basic scripts basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) { throw basicNoUIObj.Error.Exception; } using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) // script parsing error { throw basicNoUIObj.Error.Exception; } using (var instance = basicNoUIObj.CreateInstance(ScriptPath(Script) + "<IncidentAction")) { // Execute script code via an interface IIncidentAction action = instance.Cast <IIncidentAction>(); TheIncident.Start(action, this.Text); } } } catch (WinWrap.Basic.TerminatedException) { // script execution terminated, ignore error } catch (Exception ex) { // script caused an exception basicNoUIObj.ReportError(ex); } } TheIncident = null; }
void basicNoUIObj_Pause_(object sender, EventArgs e) { WinWrap.Basic.BasicNoUIObj basicNoUIObj = sender as WinWrap.Basic.BasicNoUIObj; // timedout or paused while not debugging if (timedout_ || !basicNoUIObj.Synchronized) { if (basicNoUIObj.Error == null) { LogError(Examples.SharedSource.WinWrapBasic.FormatTimeoutError(basicNoUIObj, timedout_)); } // Script execution has paused, terminate the script basicNoUIObj.Run = false; } }
void basicNoUIObj_DoEvents(object sender, EventArgs e) { WinWrap.Basic.BasicNoUIObj basicNoUIObj = sender as WinWrap.Basic.BasicNoUIObj; if (basicNoUIObj.Synchronized) { // process pending debugging commands ProcessSynchronizingEvents(basicNoUIObj); } if (basicNoUIObj.Run && DateTime.Now >= timelimit_) { timedout_ = true; // time timelimit has been reached, terminate the script basicNoUIObj.Run = false; } }
private void ProcessSynchronizingEvents(WinWrap.Basic.BasicNoUIObj basicNoUIObj) { string commands = commands_.ReadAll(); if (!string.IsNullOrEmpty(commands)) { timelimit_ = DateTime.Now + new TimeSpan(0, 0, 10); // timeout in ten seconds string[] commands2 = commands.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); foreach (string command in commands2) { string[] parts = command.Split(new char[] { ' ' }, 2); int id = int.Parse(parts[0]); string param = Encoding.UTF8.GetString(Convert.FromBase64String(parts[1])); basicNoUIObj.Synchronize(param, id); } } }
private void buttonRunScript_Click(object sender, EventArgs e) { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new System.Guid("00000000-0000-0000-0000-000000000000"); basicNoUIObj.Initialize(); /// Extend WinWrap Basic scripts with Examples.Extensions assembly /// Add "Imports Examples.Extensions" to all WinWrap Basic scripts /// Add "Imports Examples.Extensions.ScriptingLanguage" all WinWrap Basic scripts basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); basicNoUIObj.Sandboxed = true; try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) { throw basicNoUIObj.Error.Exception; } using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) { throw basicNoUIObj.Error.Exception; } // Execute script code via an event ScriptingLanguage.TheIncident.Start(this.Text); } } catch (Exception ex) { basicNoUIObj.ReportError(ex); } } TheIncident = null; }
static private string VerifyWinWrapBasic() { try { using (WinWrap.Basic.BasicNoUIObj basic = new WinWrap.Basic.BasicNoUIObj()) { basic.Secret = new Guid(Secret.MySecret); basic.Initialize(); if (basic.IsInitialized()) { return(null); } } } catch (Exception ex) { return(ex.Message); } return(null); }
private void buttonRunScript_Click(object sender, EventArgs e) { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new System.Guid("00000000-0000-0000-0000-000000000000"); basicNoUIObj.Initialize(); /// Extend WinWrap Basic scripts with Examples.Extensions assembly /// Add "Imports Examples.Extensions" to all WinWrap Basic scripts /// Add "Imports Examples.Extensions.ScriptingLanguage" all WinWrap Basic scripts basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); basicNoUIObj.Sandboxed = true; try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) throw basicNoUIObj.Error.Exception; using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) throw basicNoUIObj.Error.Exception; // Execute script code via an event ScriptingLanguage.TheIncident.Start(this.Text); } } catch (Exception ex) { basicNoUIObj.ReportError(ex); } } TheIncident = null; }
void basicNoUIObj_DoEvents(object sender, EventArgs e) { WinWrap.Basic.BasicNoUIObj basicNoUIObj = sender as WinWrap.Basic.BasicNoUIObj; if (basicNoUIObj.Synchronized) { conns_.ForEachConnection(conn => { string[] commands = conn.GetReceviedData("\r\n"); foreach (string command in commands) { string param = Encoding.UTF8.GetString(Convert.FromBase64String(command)); basicNoUIObj.Synchronize(param, conn.Id); } }); } else if (DateTime.Now >= timelimit_) { timedout_ = true; // time timelimit has been reached, terminate the script basicNoUIObj.Run = false; } }
private void WinWrapExecute() { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new Guid(GetPatternString("Guid[(]\"(.*)\"[)]")); basicNoUIObj.Initialize(); basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) { throw basicNoUIObj.Error.Exception; } using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) { throw basicNoUIObj.Error.Exception; } // Execute script code via an event ScriptingLanguage.TheIncident.Start("Default.aspx"); } } catch (Exception ex) { basicNoUIObj.ReportError(ex); } } TheIncident = null; }
void basicNoUIObj_ErrorAlert(object sender, EventArgs e) { WinWrap.Basic.BasicNoUIObj basicNoUIObj = sender as WinWrap.Basic.BasicNoUIObj; LogError(basicNoUIObj.Error); }
private void WinWrapExecute(bool debug) { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.End += basicNoUIObj_End; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Resume += basicNoUIObj_Resume; basicNoUIObj.Synchronizing += basicNoUIObj_Synchronizing; basicNoUIObj.Secret = new Guid(AzureOnlyStrings.GetNamedString("Guid", "00000000-0000-0000-0000-000000000000")); basicNoUIObj.Initialize(); basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); if (debug) { // prepare for debugging basicNoUIObj.Synchronized = true; Log("Debugging..."); } try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) { throw basicNoUIObj.Error.Exception; } using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) { throw basicNoUIObj.Error.Exception; } if (debug) { // step into the script event handler module.StepInto = true; timelimit_ = DateTime.Now + new TimeSpan(0, 0, 30); // timeout in 30 seconds } // Execute script code via an event ScriptingLanguage.TheIncident.Start("Default.aspx"); } } catch (Exception ex) { if (debug) { // report error and allow remote to catch up basicNoUIObj.ReportError(ex); basicNoUIObj.Wait(3); } basicNoUIObj.ReportError(ex); } if (debug) { basicNoUIObj.Wait(3); Log("Debugging complete."); } } TheIncident = null; }
private void WinWrapExecute() { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new Guid(GetPatternString("Guid[(]\"(.*)\"[)]")); basicNoUIObj.Initialize(); basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) throw basicNoUIObj.Error.Exception; using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) throw basicNoUIObj.Error.Exception; // Execute script code via an event ScriptingLanguage.TheIncident.Start("Default.aspx"); } } catch (Exception ex) { basicNoUIObj.ReportError(ex); } } TheIncident = null; }
private void RunWinWrap() { try { using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; //#if DEBUG // Debug.Print in a script shown on webpage when running locally basicNoUIObj.DebugPrint += basicNoUIObj_DebugPrint; //#endif basicNoUIObj.Secret = new Guid(Utils.GetPatternString("wwhowto01", "Guid[(]\"(.*)\"[)]")); basicNoUIObj.Initialize(); basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); //basicNoUIObj.AddReference(typeof(String).Assembly); //Button1.Text = basicNoUIObj.Evaluate("2+3"); basicNoUIObj.VirtualFileSystem = new VirtualFileSystem(); basicNoUIObj.RunFile("local/Macro1.bas"); //DrawTriangle(); //basicNoUIObj.RunFile("local/Macro2.bas"); string macroName = String.Format(@"{0}/{1}", Session["Code"].ToString(), "Macro2.bas"); basicNoUIObj.RunFile(macroName); ImageUser.ImageUrl = clientImage_.ImageUrl(); } } catch (Exception e) { AppendToTextBox1(e.Message); } }
protected void Button2_Click(object sender, EventArgs e) { TextBox2.Text = DateTime.Now.ToString(); try { using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; //#if DEBUG // Debug.Print in a script shown on webpage when running locally basicNoUIObj.DebugPrint += basicNoUIObj_DebugPrint; //#endif basicNoUIObj.Secret = new Guid(Utils.GetPatternString("wwhowto01", "Guid[(]\"(.*)\"[)]")); basicNoUIObj.Initialize(); basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); //basicNoUIObj.AddReference(typeof(String).Assembly); //Button1.Text = basicNoUIObj.Evaluate("2+3"); basicNoUIObj.VirtualFileSystem = new VirtualFileSystem(); /*basicNoUIObj.RunFile("local/Macro1.bas"); //DrawTriangle(); //basicNoUIObj.RunFile("local/Macro2.bas"); string macroName = String.Format(@"{0}/{1}", Session["Code"].ToString(), "Macro2.bas"); basicNoUIObj.RunFile(macroName);*/ using (var module = basicNoUIObj.ModuleInstance("local/Good.bas", false)) { if (module == null) { string serror = Utils.FormatError(basicNoUIObj.Error, basicNoUIObj.VirtualFileSystem); TextBox1.Text = serror; TextBox1.Visible = true; } else { ScriptingLanguage.TriangleImage.Start(); ImageUser.ImageUrl = clientImage_.ImageUrl(); } } } } catch (Exception ex) { AppendToTextBox1(ex.Message); } }
private void WinWrapExecute(bool debug) { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.End += basicNoUIObj_End; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Resume += basicNoUIObj_Resume; basicNoUIObj.Synchronizing += basicNoUIObj_Synchronizing; basicNoUIObj.Secret = new Guid(AzureOnlyStrings.GetNamedString("Guid", "00000000-0000-0000-0000-000000000000")); basicNoUIObj.Initialize(); basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); if (debug) { // prepare for debugging basicNoUIObj.Synchronized = true; Log("Debugging..."); } try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) throw basicNoUIObj.Error.Exception; using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) throw basicNoUIObj.Error.Exception; if (debug) { // step into the script event handler module.StepInto = true; timelimit_ = DateTime.Now + new TimeSpan(0, 0, 30); // timeout in 30 seconds } // Execute script code via an event ScriptingLanguage.TheIncident.Start("Default.aspx"); } } catch (Exception ex) { if (debug) { // report error and allow remote to catch up basicNoUIObj.ReportError(ex); basicNoUIObj.Wait(3); } basicNoUIObj.ReportError(ex); } if (debug) { basicNoUIObj.Wait(3); Log("Debugging complete."); } } TheIncident = null; }
private void ExecuteWinWrapBasic() { TheIncident = new Incident(); using (var basicNoUIObj = new WinWrap.Basic.BasicNoUIObj()) { basicNoUIObj.Begin += basicNoUIObj_Begin; basicNoUIObj.DoEvents += basicNoUIObj_DoEvents; basicNoUIObj.ErrorAlert += basicNoUIObj_ErrorAlert; basicNoUIObj.Pause_ += basicNoUIObj_Pause_; basicNoUIObj.Secret = new System.Guid("00000000-0000-0000-0000-000000000000"); basicNoUIObj.Initialize(); // Extend WinWrap Basic scripts with Examples.Extensions assembly // Add "Imports Examples.Extensions" to all WinWrap Basic scripts // Add "Imports Examples.Extensions.ScriptingLanguage" all WinWrap Basic scripts basicNoUIObj.AddScriptableObjectModel(typeof(ScriptingLanguage)); try { if (!basicNoUIObj.LoadModule(ScriptPath("Globals.bas"))) throw basicNoUIObj.Error.Exception; using (var module = basicNoUIObj.ModuleInstance(ScriptPath(Script), false)) { if (module == null) // script parsing error throw basicNoUIObj.Error.Exception; using (var instance = basicNoUIObj.CreateInstance(ScriptPath(Script) + "<IncidentAction")) { // Execute script code via an interface IIncidentAction action = instance.Cast<IIncidentAction>(); TheIncident.Start(action, this.Text); } } } catch (WinWrap.Basic.TerminatedException) { // script execution terminated, ignore error } catch (Exception ex) { // script caused an exception basicNoUIObj.ReportError(ex); } } TheIncident = null; }
void basicNoUIObj_Begin(object sender, EventArgs e) { WinWrap.Basic.BasicNoUIObj basicNoUIObj = sender as WinWrap.Basic.BasicNoUIObj; timedout_ = false; timelimit_ = DateTime.Now + new TimeSpan(0, 0, 1); // timeout in one second }