/// <summary> /// Initializes a new Windows Script engine instance. /// </summary> /// <param name="progID">The programmatic identifier (ProgID) of the Windows Script engine class.</param> /// <param name="name">A name to associate with the instance. Currently this name is used only as a label in presentation contexts such as debugger user interfaces.</param> /// <param name="flags">A value that selects options for the operation.</param> /// <remarks> /// The <paramref name="progID"/> argument can be a class identifier (CLSID) in standard /// GUID format with braces (e.g., "{F414C260-6AC0-11CF-B6D1-00AA00BBBB58}"). /// </remarks> protected WindowsScriptEngine(string progID, string name, WindowsScriptEngineFlags flags) : base(name) { AccessContext = typeof(ScriptEngine); script = base.ScriptInvoke(() => { activeScript = ActiveScriptWrapper.Create(progID, flags); engineFlags = flags; if (flags.HasFlag(WindowsScriptEngineFlags.EnableDebugging) && ProcessDebugManagerWrapper.TryCreate(out processDebugManager)) { processDebugManager.CreateApplication(out debugApplication); debugApplication.SetName(Name); if (processDebugManager.TryAddApplication(debugApplication, out debugApplicationCookie)) { sourceManagement = !flags.HasFlag(WindowsScriptEngineFlags.DisableSourceManagement); } else { debugApplication.Close(); debugApplication = null; processDebugManager = null; } } activeScript.SetScriptSite(new ScriptSite(this)); activeScript.InitNew(); activeScript.SetScriptState(ScriptState.Started); return(WindowsScriptItem.Wrap(this, GetScriptDispatch())); }); }
/// <summary> /// Initializes a new Windows Script engine instance with the specified list of supported file name extensions and synchronous invoker. /// </summary> /// <param name="progID">The programmatic identifier (ProgID) of the Windows Script engine class.</param> /// <param name="name">A name to associate with the instance. Currently this name is used only as a label in presentation contexts such as debugger user interfaces.</param> /// <param name="fileNameExtensions">A semicolon-delimited list of supported file name extensions.</param> /// <param name="flags">A value that selects options for the operation.</param> /// <param name="syncInvoker">An object that enforces thread affinity for the instance.</param> /// <remarks> /// The <paramref name="progID"/> argument can be a class identifier (CLSID) in standard /// GUID format with braces (e.g., "{F414C260-6AC0-11CF-B6D1-00AA00BBBB58}"). /// </remarks> protected WindowsScriptEngine(string progID, string name, string fileNameExtensions, WindowsScriptEngineFlags flags, ISyncInvoker syncInvoker) : base(name, fileNameExtensions) { MiscHelpers.VerifyNonNullArgument(syncInvoker, nameof(syncInvoker)); this.syncInvoker = syncInvoker; script = base.ScriptInvoke(() => { activeScript = ActiveScriptWrapper.Create(progID, flags); engineFlags = flags; if (flags.HasFlag(WindowsScriptEngineFlags.EnableDebugging) && ProcessDebugManagerWrapper.TryCreate(out processDebugManager)) { processDebugManager.CreateApplication(out debugApplication); debugApplication.SetName(Name); if (processDebugManager.TryAddApplication(debugApplication, out debugApplicationCookie)) { sourceManagement = !flags.HasFlag(WindowsScriptEngineFlags.DisableSourceManagement); } else { debugApplication.Close(); debugApplication = null; processDebugManager = null; } } activeScript.SetScriptSite(new ScriptSite(this)); activeScript.InitNew(); activeScript.SetScriptState(ScriptState.Started); return(WindowsScriptItem.Wrap(this, GetScriptDispatch())); }); }
public ActiveScriptWrapper64(string progID, WindowsScriptEngineFlags flags) { // ReSharper disable SuspiciousTypeConversion.Global pActiveScript = RawCOMHelpers.CreateInstance <IActiveScript>(progID); pActiveScriptParse = RawCOMHelpers.QueryInterface <IActiveScriptParse64>(pActiveScript); pActiveScriptDebug = RawCOMHelpers.QueryInterface <IActiveScriptDebug64>(pActiveScript); pActiveScriptGarbageCollector = RawCOMHelpers.QueryInterfaceNoThrow <IActiveScriptGarbageCollector>(pActiveScript); pDebugStackFrameSniffer = RawCOMHelpers.QueryInterface <IDebugStackFrameSnifferEx64>(pActiveScript); activeScript = (IActiveScript)Marshal.GetObjectForIUnknown(pActiveScript); activeScriptParse = (IActiveScriptParse64)activeScript; activeScriptDebug = (IActiveScriptDebug64)activeScript; activeScriptGarbageCollector = activeScript as IActiveScriptGarbageCollector; debugStackFrameSniffer = (IDebugStackFrameSnifferEx64)activeScript; if (flags.HasFlag(WindowsScriptEngineFlags.EnableStandardsMode)) { var activeScriptProperty = activeScript as IActiveScriptProperty; if (activeScriptProperty != null) { object name; activeScriptProperty.GetProperty(ScriptProp.Name, IntPtr.Zero, out name); if (Equals(name, "JScript")) { object value = ScriptLanguageVersion.Standards; activeScriptProperty.SetProperty(ScriptProp.InvokeVersioning, IntPtr.Zero, ref value); } } } // ReSharper restore SuspiciousTypeConversion.Global }
public ActiveScriptWrapper32(string progID, WindowsScriptEngineFlags flags) { // ReSharper disable SuspiciousTypeConversion.Global pActiveScript = ActivationHelpers.CreateInstance <IActiveScript>(progID); pActiveScriptParse = UnknownHelpers.QueryInterface <IActiveScriptParse32>(pActiveScript); pActiveScriptDebug = UnknownHelpers.QueryInterface <IActiveScriptDebug32>(pActiveScript); pActiveScriptGarbageCollector = UnknownHelpers.QueryInterfaceNoThrow <IActiveScriptGarbageCollector>(pActiveScript); pDebugStackFrameSniffer = UnknownHelpers.QueryInterfaceNoThrow <IDebugStackFrameSnifferEx32>(pActiveScript); activeScript = (IActiveScript)Marshal.GetObjectForIUnknown(pActiveScript); activeScriptParse = (IActiveScriptParse32)activeScript; activeScriptDebug = (IActiveScriptDebug32)activeScript; activeScriptGarbageCollector = activeScript as IActiveScriptGarbageCollector; debugStackFrameSniffer = activeScript as IDebugStackFrameSnifferEx32; if (flags.HasFlag(WindowsScriptEngineFlags.EnableStandardsMode)) { var activeScriptProperty = activeScript as IActiveScriptProperty; if (activeScriptProperty != null) { object name; activeScriptProperty.GetProperty(ScriptProp.Name, IntPtr.Zero, out name); if (Equals(name, "JScript")) { object value = ScriptLanguageVersion.Standards; activeScriptProperty.SetProperty(ScriptProp.InvokeVersioning, IntPtr.Zero, ref value); } } if (!flags.HasFlag(WindowsScriptEngineFlags.DoNotEnableVTablePatching) && MiscHelpers.IsX86InstructionSet()) { HostItem.EnableVTablePatching = true; } } // ReSharper restore SuspiciousTypeConversion.Global }
public ActiveScriptWrapper64(string progID, WindowsScriptEngineFlags flags) { pActiveScript = RawCOMHelpers.CreateInstance<IActiveScript>(progID); pActiveScriptParse = RawCOMHelpers.QueryInterface<IActiveScriptParse64>(pActiveScript); pActiveScriptDebug = RawCOMHelpers.QueryInterface<IActiveScriptDebug64>(pActiveScript); pActiveScriptGarbageCollector = RawCOMHelpers.QueryInterfaceNoThrow<IActiveScriptGarbageCollector>(pActiveScript); pDebugStackFrameSniffer = RawCOMHelpers.QueryInterface<IDebugStackFrameSnifferEx64>(pActiveScript); activeScript = (IActiveScript)Marshal.GetObjectForIUnknown(pActiveScript); activeScriptParse = (IActiveScriptParse64)activeScript; activeScriptDebug = (IActiveScriptDebug64)activeScript; activeScriptGarbageCollector = activeScript as IActiveScriptGarbageCollector; debugStackFrameSniffer = (IDebugStackFrameSnifferEx64)activeScript; if (flags.HasFlag(WindowsScriptEngineFlags.EnableStandardsMode)) { var activeScriptProperty = activeScript as IActiveScriptProperty; if (activeScriptProperty != null) { object name; activeScriptProperty.GetProperty(ScriptProp.Name, IntPtr.Zero, out name); if (Equals(name, "JScript")) { object value = ScriptLanguageVersion.Standards; activeScriptProperty.SetProperty(ScriptProp.InvokeVersioning, IntPtr.Zero, ref value); } } } }