home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / olescrpt.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  9KB  |  358 lines

  1. //=--------------------------------------------------------------------------=
  2. // OleScrpt.h
  3. //=--------------------------------------------------------------------------=
  4. // (C) Copyright 1996 Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // Declarations for OLE Scripting host applications and script engines.
  13. //
  14.  
  15. #ifndef __OleScript_h
  16. #define __OleScript_h
  17.  
  18. #ifndef _OLECTL_H_
  19. #include <olectl.h>
  20. #endif
  21.  
  22. /* GUIDs
  23.  ********/
  24.  
  25. // {75033F81-7077-11cf-8F20-00805F2CD064}
  26. DEFINE_GUID(IID_IOleScript, 0x75033f81, 0x7077, 0x11cf, 0x8f, 0x20, 0x0, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
  27.  
  28. // {4B0797A2-692C-11cf-8F20-00805F2CD064}
  29. DEFINE_GUID(IID_IOleScriptParse, 0x4b0797a2, 0x692c, 0x11cf, 0x8f, 0x20, 0x0, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
  30.  
  31. // {75033F82-7077-11cf-8F20-00805F2CD064}
  32. DEFINE_GUID(IID_IOleScriptSite, 0x75033f82, 0x7077, 0x11cf, 0x8f, 0x20, 0x0, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
  33.  
  34. // Constants used by OLE Scripting:
  35. //
  36.  
  37. /* IOleScript::AddNamedItem() input flags */
  38.  
  39. #define SCRIPTITEM_ISPERSISTENT            0x00000001
  40. #define SCRIPTITEM_ISVISIBLE            0x00000002
  41. #define SCRIPTITEM_ISSOURCE                0x00000004
  42. #define SCRIPTITEM_GLOBALMEMBERS        0x00000008
  43. #define SCRIPTITEM_EXISTS                0x00000080
  44. #define SCRIPTITEM_MULTIINSTANCE        0x00000100
  45. #define SCRIPTITEM_CODEONLY                0x00000200
  46.  
  47. #define SCRIPTITEM_ALL_FLAGS            (SCRIPTITEM_PERSISTENT \
  48.                                          SCRIPTITEM_SOURCE | \
  49.                                          SCRIPTITEM_VISIBLE | \
  50.                                          SCRIPTITEM_GLOBALMEMBERS | \
  51.                                          SCRIPTITEM_EXISTS    | \
  52.                                          SCRIPTITEM_MULTIINSTANCE | \
  53.                                          SCRIPTITEM_CODEONLY)
  54.  
  55. /* IOleScript::AddTypeLib() input flags */
  56.  
  57. #define SCRIPTTYPELIB_ISPERSISTENT        0x00000001
  58. #define SCRIPTTYPELIB_ISCONTROL            0x00000010
  59. #define SCRIPTTYPELIB_ALL_FLAGS            (SCRIPTTEXT_ISPERSISTENT | \
  60.                                          SCRIPTTEXT_ISCONTROL)
  61.  
  62. /* IOleScriptParse::AddScriptText() and IOleScriptParse::EvaluateScriptText() input flags */
  63.  
  64. #define SCRIPTTEXT_ISPERSISTENT            0x00000001
  65. #define SCRIPTTEXT_ISVISIBLE            0x00000002
  66. #define SCRIPTTEXT_ISEXPRESSION            0x00000020
  67. #define SCRIPTTEXT_KEEPDEFINITIONS        0x00000040
  68. #define SCRIPTTEXT_ALLOWEXECUTION        0x00000400
  69. #define SCRIPTTEXT_ALL_FLAGS            (SCRIPTTEXT_ISPERSISTENT | \
  70.                                          SCRIPTTEXT_ISVISIBLE | \
  71.                                          SCRIPTTEXT_ISEXPRESSION | \
  72.                                          SCRIPTTEXT_KEEPDEFINITIONS | \
  73.                                          SCRIPTTEXT_ALLOWEXECUTION)
  74.  
  75. /* IOleScriptSite::GetItemInfo() input flags */
  76.  
  77. #define SCRIPTINFO_IUNKNOWN                0x00000001
  78. #define SCRIPTINFO_ITYPEINFO            0x00000002
  79. #define SCRIPTINFO_ALL_FLAGS            (SCRIPTINFO_IUNKNOWN | \
  80.                                          SCRIPTINFO_ITYPEINFO)
  81.  
  82. /* IOleScriptSite::CreateItem() input flags */
  83.  
  84. #define SCRIPTCREATE_NEW                0x00000001
  85. #define SCRIPTCREATE_CREATENAMED        0x00000002
  86. #define SCRIPTCREATE_GETNAMED            0x00000004
  87. #define SCRIPTCREATE_ALL_FLAGS            (SCRIPTCREATE_NEW | \
  88.                                          SCRIPTCREATE_CREATENAMED | \
  89.                                          SCRIPTCREATE_GETNAMED)
  90.  
  91. /* IOleScript::Interrupt() Flags */
  92.  
  93. #define SCRIPTINTERRUPT_DEBUG            0x00000001
  94. #define SCRIPTINTERRUPT_RAISEEXCEPTION    0x00000002
  95.  
  96. /* script state values */
  97.  
  98. typedef enum {
  99.  
  100.     SCRIPTSTATE_UNINITIALIZED        = 0,
  101.     SCRIPTSTATE_LOADED                = 1,
  102.     SCRIPTSTATE_CONNECTED            = 2,
  103.     SCRIPTSTATE_DISCONNECTED        = 3,
  104.     SCRIPTSTATE_ZOMBIED                = 4,
  105.  
  106. } SCRIPTSTATE ;
  107.  
  108. /* script thread state values */
  109.  
  110. typedef enum {
  111.  
  112.     SCRIPTTHREADSTATE_NOTINSCRIPT    = 0,
  113.     SCRIPTTHREADSTATE_RUNNING        = 1,
  114.     SCRIPTTHREADSTATE_BLOCKED        = 2,
  115.  
  116. } SCRIPTTHREADSTATE ;
  117.  
  118. /* Thread IDs */
  119.  
  120. typedef DWORD SCRIPTTHREADID;
  121.  
  122. #define SCRIPTTHREADID_CURRENT            ((SCRIPTTHREADID)-1)
  123. #define SCRIPTTHREADID_BASE                ((SCRIPTTHREADID)-2)
  124. #define SCRIPTTHREADID_ALL                ((SCRIPTTHREADID)-3)
  125.  
  126. /* Interfaces
  127.  *************/
  128.  
  129. typedef interface IOleComponentManager IOleComponentManager;
  130. typedef interface IStream IStream;
  131. typedef interface ITypeInfo ITypeInfo;
  132. typedef interface IOleScriptSite IOleScriptSite;
  133. typedef interface IOleScript IOleScript;
  134. typedef interface IOleScriptParse IOleScriptParse;
  135. typedef interface IOleScriptDebug IOleScriptDebug;
  136. typedef interface IOleScriptAuthor IOleScriptAuthor;
  137.  
  138. #undef  INTERFACE
  139. #define INTERFACE IOleScriptSite
  140.  
  141. DECLARE_INTERFACE_(IOleScriptSite, IUnknown)
  142. {
  143.     /* IUnknown methods */
  144.  
  145.     STDMETHOD(QueryInterface)(THIS_
  146.         /* [in]  */ REFIID riid,
  147.         /* [out] */ PVOID *ppvObject
  148.     ) PURE;
  149.  
  150.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  151.  
  152.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  153.  
  154.     /* IOleScriptSite methods */
  155.  
  156.     STDMETHOD(GetLCID)(THIS_
  157.         /* [out] */ LCID *plcid
  158.     ) PURE;
  159.  
  160.     STDMETHOD(GetItemInfo)(THIS_
  161.         /* [in]  */ LPCOLESTR    pstrName,
  162.         /* [in]  */ DWORD        dwReturnMask,
  163.         /* [out] */ IUnknown **    ppiunkItem,
  164.         /* [out] */ ITypeInfo **ppti
  165.     ) PURE;
  166.  
  167.     STDMETHOD(GetDocVersionString)(THIS_
  168.         /* [out] */ BSTR *pszVersion
  169.     ) PURE;
  170.  
  171.     STDMETHOD(RequestItems)(THIS) PURE;
  172.  
  173.     STDMETHOD(RequestTypeLibs)(THIS) PURE;
  174.  
  175.     STDMETHOD(GetComponentManager)(THIS_
  176.         /* [out] */ IOleComponentManager **ppicm
  177.     ) PURE;
  178.  
  179.     STDMETHOD(EnableModeless)(THIS_
  180.         /* [in]  */ BOOL fEnable
  181.     ) PURE;
  182.  
  183.     STDMETHOD(OnScriptTerminate)(THIS_
  184.         /* [in]  */ const VARIANT *pvarResult,
  185.         /* [in]  */ const EXCEPINFO *pexcepinfo
  186.     ) PURE;
  187.  
  188.     STDMETHOD(OnStateChange)(THIS_
  189.         /* [in]  */ SCRIPTSTATE ssScriptState
  190.     ) PURE;
  191.  
  192.     STDMETHOD(OnScriptError)(THIS_
  193.         /* [in]  */ const EXCEPINFO *pexcepinfo
  194.     ) PURE;
  195.  
  196.     STDMETHOD(CreateItem)(THIS_
  197.         /* [in]  */ LPCOLESTR    pstrName,
  198.         /* [out] */ IUnknown **    ppunkItemNew
  199.     ) PURE;
  200. };
  201.  
  202. typedef IOleScriptSite *PIOleScriptSite;
  203.  
  204. #undef  INTERFACE
  205. #define INTERFACE IOleScript
  206.  
  207. DECLARE_INTERFACE_(IOleScript, IUnknown)
  208. {
  209.     /* IUnknown methods */
  210.  
  211.     STDMETHOD(QueryInterface)(THIS_
  212.         /* [in]  */ REFIID riid,
  213.         /* [out] */ PVOID *ppvObject
  214.     ) PURE;
  215.  
  216.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  217.  
  218.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  219.  
  220.     /* IOleScript methods */
  221.  
  222.     STDMETHOD(SetScriptSite)(THIS_
  223.         /* [in]  */ IOleScriptSite *pioss
  224.     ) PURE;
  225.  
  226.     STDMETHOD(GetScriptSite)(THIS_
  227.         /* [in]  */ REFIID iid,
  228.         /* [out] */ VOID **ppvSiteObject
  229.     ) PURE;
  230.  
  231.     STDMETHOD(SetScriptState)(THIS_
  232.         /* [in]  */ SCRIPTSTATE ss
  233.     ) PURE;
  234.  
  235.     STDMETHOD(GetScriptState)(THIS_
  236.         /* [out] */ SCRIPTSTATE *pssState
  237.     ) PURE;
  238.  
  239.     STDMETHOD(Close)(THIS) PURE;
  240.  
  241.     STDMETHOD(AddNamedItem)(THIS_
  242.         /* [in]  */ LPCOLESTR pstrName,
  243.         /* [in]  */ DWORD dwFlags
  244.     ) PURE;
  245.  
  246.     STDMETHOD(RenameItem)(THIS_
  247.         /* [in]  */ LPCOLESTR pstrOldName,
  248.         /* [in]  */ LPCOLESTR pstrNewName
  249.     ) PURE;
  250.  
  251.     STDMETHOD(RemoveItem)(THIS_
  252.         /* [in]  */ LPCOLESTR pstrName
  253.     ) PURE;
  254.  
  255.     STDMETHOD(AddTypeLib)(THIS_
  256.         /* [in]  */ REFGUID rguidTypeLib,
  257.         /* [in]  */ DWORD dwMajor,
  258.         /* [in]  */ DWORD dwMinor,
  259.         /* [in]  */ DWORD dwFlags
  260.     ) PURE;
  261.  
  262.     STDMETHOD(RemoveTypeLib)(THIS_
  263.         /* [in]  */ REFGUID rguidTypeLib
  264.     ) PURE;
  265.  
  266.     STDMETHOD(GetExtensibilityObject)(THIS_
  267.         /* [out] */ IDispatch **ppdisp
  268.     ) PURE;
  269.  
  270.     STDMETHOD(GetScriptMacroObject)(THIS_
  271.         /* [in]  */ LPCOLESTR pstrItemName,
  272.         /* [out] */ IDispatch **ppdisp
  273.     ) PURE;
  274.  
  275.     STDMETHOD(GetCurrentScriptThreadID)(THIS_
  276.         /* [out] */ SCRIPTTHREADID *pstidThread
  277.     ) PURE;
  278.  
  279.     STDMETHOD(GetScriptThreadID)(THIS_
  280.         /* [in]  */ DWORD dwWin32ThreadId,
  281.         /* [out] */ SCRIPTTHREADID *pstidThread
  282.     ) PURE;
  283.  
  284.     STDMETHOD(GetScriptThreadState)(THIS_
  285.         /* [in]  */ SCRIPTTHREADID stidThread,
  286.         /* [out] */ SCRIPTTHREADSTATE *pstsState
  287.     ) PURE;
  288.  
  289.     STDMETHOD(InterruptScriptThread)(THIS_
  290.         /* [in]  */ SCRIPTTHREADID stidThread,
  291.         /* [in]  */ const EXCEPINFO *pexcepinfo,
  292.         /* [in]  */ DWORD dwFlags
  293.     ) PURE;
  294.  
  295.     STDMETHOD(Clone)(THIS_
  296.         /* [out] */ IOleScript **ppscript
  297.     ) PURE;
  298.  
  299.     STDMETHOD(CauseCreateItem)(THIS_
  300.         /* [in]  */ LPCOLESTR    pstrName,
  301.         /* [in]  */ DWORD        dwFlags,
  302.         /* [out] */ IUnknown **    ppunkCodeNew
  303.     ) PURE;
  304.  
  305. };
  306. typedef IOleScript *PIOleScript;
  307.  
  308. #undef  INTERFACE
  309. #define INTERFACE IOleScriptParse
  310.  
  311. DECLARE_INTERFACE_(IOleScriptParse, IUnknown)
  312. {
  313.     /* IUnknown methods */
  314.  
  315.     STDMETHOD(QueryInterface)(THIS_
  316.         /* [in]  */ REFIID riid,
  317.         /* [out] */ PVOID *ppvObject
  318.     ) PURE;
  319.  
  320.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  321.  
  322.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  323.  
  324.     /* IOleScriptParse methods */
  325.  
  326.     STDMETHOD(AddScriptlet)(THIS_
  327.         /* [in]  */ LPCOLESTR    pstrDefaultName,
  328.         /* [in]  */ LPCOLESTR    pstrCode,
  329.         /* [in]  */ LPCOLESTR    pstrItemName,
  330.         /* [in]  */ LPCOLESTR    pstrSubItemName,
  331.         /* [in]  */ LPCOLESTR    pstrEventName,
  332.         /* [in]  */ LPCOLESTR    pstrDelimiter,
  333.         /* [in]  */ DWORD        dwFlags,
  334.         /* [out] */ BSTR *        pbstrName,
  335.         /* [out] */ EXCEPINFO *    pexcepinfo
  336.     ) PURE;
  337.  
  338.     STDMETHOD(RemoveScriptlet)(THIS_
  339.         /* [in]  */ LPCOLESTR pstrName
  340.     ) PURE;
  341.  
  342.     STDMETHOD(ParseScriptText)(THIS_
  343.         /* [in]  */ LPCOLESTR    pstrCode,
  344.         /* [in]  */ LPCOLESTR    pstrItemName,
  345.         /* [in]  */ IUnknown *    punkContext,
  346.         /* [in]  */ LPCOLESTR    pstrDelimiter,
  347.         /* [in]  */ DWORD        dwFlags,
  348.         /* [out] */ VARIANT *    pvarResult,
  349.         /* [out] */ EXCEPINFO *    pexcepinfo
  350.     ) PURE;
  351.  
  352. };
  353.  
  354. typedef IOleScriptParse *PIOleScriptParse;
  355.  
  356.  
  357. #endif  // __OleScript_h
  358.