// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: msscript.ocx

[
  uuid(0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC),
  version(1.0),
  helpstring("Microsoft Script Control 1.0"),
  helpfile("MSSCRIPT.HLP"),
  helpcontext(0x00113f4c)
]
library MSScriptControl
{
    // TLib :     // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("STDOLE2.TLB");

    // Forward declare all types defined in this typelib
    interface IScriptProcedure;
    interface IScriptProcedureCollection;
    interface IScriptModule;
    interface IScriptModuleCollection;
    interface IScriptError;
    interface IScriptControl;
    dispinterface DScriptControlSource;

    // NOTE: This module has no entry points and thus is invalid.
    //       There is no way to extract the dllname of a module
    //       with no entry points
    // 
    [
      dllname("<invalid typelib>"),
      uuid(AE311340-082C-11D0-95DE-00A02463AB28),
      helpstring("Constants used with ScriptControl"),
      helpcontext(0x0011490a)
    ]
    module ScriptControlConstants {
        [helpstring("Name of built-in global module - can be used as an index in ScriptControl.Modules"), helpcontext(0x0011490a)] const LPSTR GlobalModule = "Global";
        [helpstring("Setting ScriptControl.Timeout to this value prevents timeout check from occurring"), helpcontext(0x0011490a)] const long NoTimeout = -1;
    };

    typedef [helpstring("States into which the scripting engine can be placed"), helpcontext(0x0011490a)]
    enum {
        Initialized = 0,
        Connected = 1
    } ScriptControlStates;

    [
      odl,
      uuid(70841C73-067D-11D0-95D8-00A02463AB28),
      helpstring("Describes a procedure"),
      helpcontext(0x00113f46),
      hidden,
      dual,
      nonextensible,
      oleautomation
    ]
    interface IScriptProcedure : IDispatch {
        [id(00000000), propget, helpstring("Name of the procedure"), helpcontext(0x00113f0d)]
        HRESULT Name([out, retval] BSTR* pbstrName);
        [id(0x00000064), propget, helpstring("Number of arguments that are expected"), helpcontext(0x00113f48)]
        HRESULT NumArgs([out, retval] long* pcArgs);
        [id(0x00000065), propget, helpstring("True if procedure returns a value"), helpcontext(0x00113f49)]
        HRESULT HasReturnValue([out, retval] VARIANT_BOOL* pfHasReturnValue);
    };

    [
      odl,
      uuid(70841C71-067D-11D0-95D8-00A02463AB28),
      helpstring("Collection of procedures"),
      helpcontext(0x00113f47),
      hidden,
      dual,
      nonextensible,
      oleautomation
    ]
    interface IScriptProcedureCollection : IDispatch {
        [id(0xfffffffc), propget, hidden]
        HRESULT _NewEnum([out, retval] IUnknown** ppenumProcedures);
        [id(00000000), propget, helpstring("Get a procedure indexed by position or procedure name"), helpcontext(0x00113f12)]
        HRESULT Item(
                        [in] VARIANT Index, 
                        [out, retval] IScriptProcedure** ppdispProcedure);
        [id(0x00000001), propget, helpstring("Number of procedures"), helpcontext(0x00113f14)]
        HRESULT Count([out, retval] long* plCount);
    };

    [
      odl,
      uuid(70841C70-067D-11D0-95D8-00A02463AB28),
      helpstring("Context in which functions can be defined and expressions can be evaluated"),
      helpcontext(0x00113f0e),
      hidden,
      dual,
      nonextensible,
      oleautomation
    ]
    interface IScriptModule : IDispatch {
        [id(00000000), propget, helpstring("Name of the module"), helpcontext(0x00113f0d)]
        HRESULT Name([out, retval] BSTR* pbstrName);
        [id(0x000003e8), propget, helpstring("Object exposed by the scripting engine that contains methods and properties defined in the code added to the module"), helpcontext(0x00113f0a)]
        HRESULT CodeObject([out, retval] IDispatch** ppdispObject);
        [id(0x000003e9), propget, helpstring("Collection of procedures that are defined in the module"), helpcontext(0x00113f0b)]
        HRESULT Procedures([out, retval] IScriptProcedureCollection** ppdispProcedures);
        [id(0x000007d0), helpstring("Add code to the module"), helpcontext(0x00113f07)]
        HRESULT AddCode([in] BSTR Code);
        [id(0x000007d1), helpstring("Evaluate an expression within the context of the module"), helpcontext(0x00113f0c)]
        HRESULT Eval(
                        [in] BSTR Expression, 
                        [out, retval] VARIANT* pvarResult);
        [id(0x000007d2), helpstring("Execute a statement within the context of the module"), helpcontext(0x00113f08)]
        HRESULT ExecuteStatement([in] BSTR Statement);
        [id(0x000007d3), vararg, helpstring("Call a procedure defined in the module"), helpcontext(0x00113f09)]
        HRESULT Run(
                        [in] BSTR ProcedureName, 
                        [in] SAFEARRAY(VARIANT)* Parameters, 
                        [out, retval] VARIANT* pvarResult);
    };

    [
      odl,
      uuid(70841C6F-067D-11D0-95D8-00A02463AB28),
      helpstring("Collection of modules"),
      helpcontext(0x00113f0f),
      hidden,
      dual,
      nonextensible,
      oleautomation
    ]
    interface IScriptModuleCollection : IDispatch {
        [id(0xfffffffc), propget, hidden]
        HRESULT _NewEnum([out, retval] IUnknown** ppenumContexts);
        [id(00000000), propget, helpstring("Get a module indexed by position or module name"), helpcontext(0x00113f12)]
        HRESULT Item(
                        [in] VARIANT Index, 
                        [out, retval] IScriptModule** ppmod);
        [id(0x00000001), propget, helpstring("Number of modules"), helpcontext(0x00113f14)]
        HRESULT Count([out, retval] long* plCount);
        [id(0x00000002), helpstring("Add a new module"), helpcontext(0x00113f11)]
        HRESULT Add(
                        [in] BSTR Name, 
                        [in, optional] VARIANT* Object, 
                        [out, retval] IScriptModule** ppmod);
    };

    [
      odl,
      uuid(70841C78-067D-11D0-95D8-00A02463AB28),
      helpstring("Provides access to scripting error information"),
      helpcontext(0x00113eb6),
      hidden,
      dual,
      nonextensible,
      oleautomation
    ]
    interface IScriptError : IDispatch {
        [id(0x000000c9), propget, helpstring("Error number"), helpcontext(0x00113ebc)]
        HRESULT Number([out, retval] long* plNumber);
        [id(0x000000ca), propget, helpstring("Source of the error"), helpcontext(0x00113ebd)]
        HRESULT Source([out, retval] BSTR* pbstrSource);
        [id(0x000000cb), propget, helpstring("Friendly description of error"), helpcontext(0x00113eb8)]
        HRESULT Description([out, retval] BSTR* pbstrDescription);
        [id(0x000000cc), propget, helpstring("File in which help for the error can be found"), helpcontext(0x00113eba)]
        HRESULT HelpFile([out, retval] BSTR* pbstrHelpFile);
        [id(0x000000cd), propget, helpstring("Context ID for the topic with information on the error"), helpcontext(0x00113eb9)]
        HRESULT HelpContext([out, retval] long* plHelpContext);
        [id(0xfffffdfb), propget, helpstring("Line of source code on which the error occurred"), helpcontext(0x00113ebe)]
        HRESULT Text([out, retval] BSTR* pbstrText);
        [id(0x000000ce), propget, helpstring("Source code line number where the error occurred"), helpcontext(0x00113ebb)]
        HRESULT Line([out, retval] long* plLine);
        [id(0xfffffdef), propget, helpstring("Source code column position where the error occurred"), helpcontext(0x00113eb7)]
        HRESULT Column([out, retval] long* plColumn);
        [id(0x000000d0), helpstring("Clear the script error"), helpcontext(0x00113f4e)]
        HRESULT Clear();
    };

    [
      odl,
      uuid(0E59F1D3-1FBE-11D0-8FF2-00A0D10038BC),
      helpstring("Control to host scripting engines that understand the ActiveX Scripting interface"),
      helpcontext(0x00113f4c),
      hidden,
      dual,
      nonextensible,
      oleautomation
    ]
    interface IScriptControl : IDispatch {
        [id(0x000005dc), propget, helpstring("Language engine to use"), helpcontext(0x00113f52)]
        HRESULT Language([out, retval] BSTR* pbstrLanguage);
        [id(0x000005dc), propput, helpstring("Language engine to use"), helpcontext(0x00113f52)]
        HRESULT Language([in] BSTR pbstrLanguage);
        [id(0x000005dd), propget, helpstring("State of the control"), helpcontext(0x00113f55)]
        HRESULT State([out, retval] ScriptControlStates* pssState);
        [id(0x000005dd), propput, helpstring("State of the control"), helpcontext(0x00113f55)]
        HRESULT State([in] ScriptControlStates pssState);
        [id(0x000005de), propput, helpstring("hWnd used as a parent for displaying UI"), helpcontext(0x00113f54)]
        HRESULT SitehWnd([in] long phwnd);
        [id(0x000005de), propget, helpstring("hWnd used as a parent for displaying UI"), helpcontext(0x00113f54)]
        HRESULT SitehWnd([out, retval] long* phwnd);
        [id(0x000005df), propget, helpstring("Length of time in milliseconds that a script can execute before being considered hung"), helpcontext(0x00113f56)]
        HRESULT Timeout([out, retval] long* plMilleseconds);
        [id(0x000005df), propput, helpstring("Length of time in milliseconds that a script can execute before being considered hung"), helpcontext(0x00113f56)]
        HRESULT Timeout([in] long plMilleseconds);
        [id(0x000005e0), propget, helpstring("Enable or disable display of the UI"), helpcontext(0x00113f4a)]
        HRESULT AllowUI([out, retval] VARIANT_BOOL* pfAllowUI);
        [id(0x000005e0), propput, helpstring("Enable or disable display of the UI"), helpcontext(0x00113f4a)]
        HRESULT AllowUI([in] VARIANT_BOOL pfAllowUI);
        [id(0x000005e1), propget, helpstring("Force script to execute in safe mode and disallow potentially harmful actions"), helpcontext(0x00113f57)]
        HRESULT UseSafeSubset([out, retval] VARIANT_BOOL* pfUseSafeSubset);
        [id(0x000005e1), propput, helpstring("Force script to execute in safe mode and disallow potentially harmful actions"), helpcontext(0x00113f57)]
        HRESULT UseSafeSubset([in] VARIANT_BOOL pfUseSafeSubset);
        [id(0x000005e2), propget, helpstring("Collection of modules for the ScriptControl"), helpcontext(0x00113f53)]
        HRESULT Modules([out, retval] IScriptModuleCollection** ppmods);
        [id(0x000005e3), propget, helpstring("The last error reported by the scripting engine"), helpcontext(0x00113f51)]
        HRESULT Error([out, retval] IScriptError** ppse);
        [id(0x000003e8), propget, helpstring("Object exposed by the scripting engine that contains methods and properties defined in the code added to the global module"), helpcontext(0x00113f0a)]
        HRESULT CodeObject([out, retval] IDispatch** ppdispObject);
        [id(0x000003e9), propget, helpstring("Collection of procedures that are defined in the global module"), helpcontext(0x00113f0b)]
        HRESULT Procedures([out, retval] IScriptProcedureCollection** ppdispProcedures);
        [id(0xfffffdd8), hidden]
        HRESULT _AboutBox();
        [id(0x000009c4), helpstring("Add an object to the global namespace of the scripting engine"), helpcontext(0x00113f4d)]
        HRESULT AddObject(
                        [in] BSTR Name, 
                        [in] IDispatch* Object, 
                        [in, optional, defaultvalue(0)] VARIANT_BOOL AddMembers);
        [id(0x000009c5), helpstring("Reset the scripting engine to a newly created state"), helpcontext(0x00113f4e)]
        HRESULT Reset();
        [id(0x000007d0), helpstring("Add code to the global module"), helpcontext(0x00113f07)]
        HRESULT AddCode([in] BSTR Code);
        [id(0x000007d1), helpstring("Evaluate an expression within the context of the global module"), helpcontext(0x00113f0c)]
        HRESULT Eval(
                        [in] BSTR Expression, 
                        [out, retval] VARIANT* pvarResult);
        [id(0x000007d2), helpstring("Execute a statement within the context of the global module"), helpcontext(0x00113f08)]
        HRESULT ExecuteStatement([in] BSTR Statement);
        [id(0x000007d3), vararg, helpstring("Call a procedure defined in the global module"), helpcontext(0x00113f09)]
        HRESULT Run(
                        [in] BSTR ProcedureName, 
                        [in] SAFEARRAY(VARIANT)* Parameters, 
                        [out, retval] VARIANT* pvarResult);
    };

    [
      uuid(8B167D60-8605-11D0-ABCB-00A0C90FFFC0),
      hidden
    ]
    dispinterface DScriptControlSource {
        properties:
        methods:
            [id(0x00000bb8), helpstring("Event fired when any error occurs in the scripting engine"), helpcontext(0x00113f50)]
            void Error();
            [id(0x00000bb9), helpstring("Event fired when a script is aborted because of a timeout"), helpcontext(0x00113f4f)]
            void Timeout();
    };

    [
      uuid(0E59F1DA-1FBE-11D0-8FF2-00A0D10038BC),
      helpstring("Describes a procedure"),
      helpcontext(0x00113f46),
      noncreatable
    ]
    coclass Procedure {
        [default] interface IScriptProcedure;
    };

    [
      uuid(0E59F1DB-1FBE-11D0-8FF2-00A0D10038BC),
      helpstring("Collection of procedures"),
      helpcontext(0x00113f47),
      noncreatable
    ]
    coclass Procedures {
        [default] interface IScriptProcedureCollection;
    };

    [
      uuid(0E59F1DC-1FBE-11D0-8FF2-00A0D10038BC),
      helpstring("Context in which functions can be defined and expressions can be evaluated"),
      helpcontext(0x00113f0e),
      noncreatable
    ]
    coclass Module {
        [default] interface IScriptModule;
    };

    [
      uuid(0E59F1DD-1FBE-11D0-8FF2-00A0D10038BC),
      helpstring("Collection of modules"),
      helpcontext(0x00113f0f),
      noncreatable
    ]
    coclass Modules {
        [default] interface IScriptModuleCollection;
    };

    [
      uuid(0E59F1DE-1FBE-11D0-8FF2-00A0D10038BC),
      helpstring("Provides access to scripting error information"),
      helpcontext(0x00113eb6),
      noncreatable
    ]
    coclass Error {
        [default] interface IScriptError;
    };

    [
      uuid(0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC),
      helpstring("Control to host scripting engines that understand the ActiveX Scripting interface"),
      helpcontext(0x00113f4c),
      control
    ]
    coclass ScriptControl {
        [default] interface IScriptControl;
        [default, source] dispinterface DScriptControlSource;
    };
};
