Unit AXScript

unti AXScript v.1.0 05/28/97 - converted header file for Microsoft ActiveScript. Original conversion of the ActiveScript header by David Zajac (dzajac@HiWAAY.net) for Delphi 2.x. Modified by Brian Dupras (bdupras@dimensional.com) for Delphi 3.0 using interfaces instead of classes (which was necessary for D2). This unit is released to the public. No warrenty or guarentee of *anything* is expressed or implied. Use this code at your own risk - any damage is your own fault for trusting me. If you find any error in this code, fix it. If you're nice, let me know about the error so I can fix it, too. This code has to date (May 28, 1997) only been tested for creating a host for ActiveScript. I have not tried creating a scripting engine with it (and probably never will). But I've been able to host both MS JScript and MS VBScript. Good luck, Brian Dupras 5/28/97 ---------------------------------------------------------------------------------- Ahh..updates. I've updated this unit slilghtly, and created a helper unit called (and aptly so) AXScriptHelp. The only major additions were those to support MS IE4. The other updates to this unit were minor - a few slight type differences and some parameter name changes. Mostly cosmetic stuff. Again, Good luck, Brian 7/6/97 By the way, JScript, VBScript and ActiveScript are registered trademarks of Microsoft Corporation. ---------------------------------------------------------------------------------- More updates still. Thank you Gary Warren King for noticing that I'm an idiot. The identifiers : SCRIPTTHREADID_CURRENT, SCRIPTTHREADID_BASE, and SCRIPTTHREADID_ALL were originally thought to be C++ MACROS. Upon second look, however, they're not macros, they're #define constants that typcast the values -1, -2, and -3 to the #typdef SCRIPTTHREADID. Looking into another's activescript conversion confirmed this, so the change has been made and duely noted. We'll call this version 1.1 of the ActivScp.h conversion. Brian Dupras 8/26/97 p.s. At the time of this writing, a slightly older demo using this header is available at the Delphi Super Page. The URL is http://SunSITE.icm.edu.pl/delphi/, and the file is axscpd1.zip. It can be found under Delphi 3, Apps With Sources. I plan to pust axscpd2.zip real soon now, so get that one if it's there.

Classes

IActiveScript - IActiveScriptSiteWindow interface
IActiveScriptError -
IActiveScriptParse - IActiveScript interface
IActiveScriptParseProcedure - IActivScriptParse interface
IActiveScriptSite - IActiveScriptError interface
IActiveScriptSiteWindow - IActiveScriptSite interface

Functions

Types

TScriptState
TScriptThreadID
TScriptThreadState
TUserBSTR
TUserExcepInfo
TUserHWND
TUserVariant

Constants

CATID_ActiveScript
CATID_ActiveScriptParse
IID_IActiveScript
IID_IActiveScriptError
IID_IActiveScriptParse
IID_IActiveScriptParseProcedure
IID_IActiveScriptSite
IID_IActiveScriptSiteWindow
SCRIPTINFO_ALL_FLAGS
SCRIPTINFO_ITYPEINFO
SCRIPTINFO_IUNKNOWN
SCRIPTINTERRUPT_ALL_FLAGS
SCRIPTINTERRUPT_DEBUG
SCRIPTINTERRUPT_RAISEEXCEPTION
SCRIPTITEM_ALL_FLAGS
SCRIPTITEM_CODEONLY
SCRIPTITEM_GLOBALMEMBERS
SCRIPTITEM_ISPERSISTENT
SCRIPTITEM_ISSOURCE
SCRIPTITEM_ISVISIBLE
SCRIPTITEM_NOCODE
SCRIPTPROC_ALL_FLAGS
SCRIPTPROC_HOSTMANAGESSOURCE
SCRIPTPROC_IMPLICIT_PARENTS
SCRIPTPROC_IMPLICIT_THIS
SCRIPTTEXT_ALL_FLAGS
SCRIPTTEXT_DELAYEXECUTION
SCRIPTTEXT_HOSTMANAGESSOURCE
SCRIPTTEXT_ISEXPRESSION
SCRIPTTEXT_ISPERSISTENT
SCRIPTTEXT_ISVISIBLE
SCRIPTTHREADID_ALL
SCRIPTTHREADID_BASE
SCRIPTTHREADID_CURRENT
SCRIPTTYPELIB_ALL_FLAGS
SCRIPTTYPELIB_ISCONTROL
SCRIPTTYPELIB_ISPERSISTENT

Variables


Functions


Types


TScriptState = (
    SCRIPTSTATE_UNINITIALIZED,
    SCRIPTSTATE_STARTED,
    SCRIPTSTATE_CONNECTED,
    SCRIPTSTATE_DISCONNECTED,
    SCRIPTSTATE_CLOSED,
    SCRIPTSTATE_INITIALIZED
    );
script state values
TScriptThreadID = DWORD
Thread IDs */
TScriptThreadState = (
    SCRIPTTHREADSTATE_NOTINSCRIPT,
    SCRIPTTHREADSTATE_RUNNING
    );
script thread state values */
TUserBSTR=TBStr

TUserExcepInfo=TExcepInfo

TUserHWND=HWND
new IE4 types
TUserVariant=OleVariant

Constants

CATID_ActiveScript = '{F0B7A1A1-9847-11cf-8F20-00805F2CD064}'

Category IDs

CATID_ActiveScriptParse = '{F0B7A1A2-9847-11cf-8F20-00805F2CD064}'

IID_IActiveScript = '{BB1A2AE1-A4F9-11cf-8F20-00805F2CD064}'

IID_IActiveScriptError = '{EAE1BA61-A4ED-11cf-8F20-00805F2CD064}'

IID_IActiveScriptParse = '{BB1A2AE2-A4F9-11cf-8F20-00805F2CD064}'

IID_IActiveScriptParseProcedure = '{1CFF0050-6FDD-11d0-9328-00A0C90DCAA9}'

IID_IActiveScriptSite = '{DB01A1E3-A42B-11cf-8F20-00805F2CD064}'

Interface IDs

IID_IActiveScriptSiteWindow = '{D10F6761-83E9-11cf-8F20-00805F2CD064}'

SCRIPTINFO_ALL_FLAGS = (SCRIPTINFO_IUNKNOWN or SCRIPTINFO_ITYPEINFO)

SCRIPTINFO_ITYPEINFO = $00000002

SCRIPTINFO_IUNKNOWN = $00000001

IActiveScriptSite::GetItemInfo() input flags */

SCRIPTINTERRUPT_ALL_FLAGS = (SCRIPTINTERRUPT_DEBUG or SCRIPTINTERRUPT_RAISEEXCEPTION)

SCRIPTINTERRUPT_DEBUG = $00000001

IActiveScript::Interrupt() Flags */

SCRIPTINTERRUPT_RAISEEXCEPTION = $00000002

SCRIPTITEM_ALL_FLAGS = (SCRIPTITEM_ISSOURCE or SCRIPTITEM_ISVISIBLE or SCRIPTITEM_ISPERSISTENT or SCRIPTITEM_GLOBALMEMBERS or SCRIPTITEM_NOCODE or SCRIPTITEM_CODEONLY)

SCRIPTITEM_CODEONLY = $00000200

SCRIPTITEM_GLOBALMEMBERS = $00000008

SCRIPTITEM_ISPERSISTENT = $00000040

SCRIPTITEM_ISSOURCE = $00000004

SCRIPTITEM_ISVISIBLE = $00000002

Constants used by ActiveX Scripting:

SCRIPTITEM_NOCODE = $00000400

SCRIPTPROC_ALL_FLAGS = (SCRIPTPROC_HOSTMANAGESSOURCE or SCRIPTPROC_IMPLICIT_THIS or SCRIPTPROC_IMPLICIT_PARENTS)

SCRIPTPROC_HOSTMANAGESSOURCE = $00000080

IActiveScriptParseProcedure::ParseProcedureText() input flags

SCRIPTPROC_IMPLICIT_PARENTS = $00000200

SCRIPTPROC_IMPLICIT_THIS = $00000100

SCRIPTTEXT_ALL_FLAGS = (SCRIPTTEXT_DELAYEXECUTION or SCRIPTTEXT_ISVISIBLE or SCRIPTTEXT_ISEXPRESSION or SCRIPTTEXT_HOSTMANAGESSOURCE or SCRIPTTEXT_ISPERSISTENT)

SCRIPTTEXT_DELAYEXECUTION = $00000001

IActiveScriptParse::AddScriptlet() and IActiveScriptParse::ParseScriptText() input flags */

SCRIPTTEXT_HOSTMANAGESSOURCE = $00000080

SCRIPTTEXT_ISEXPRESSION = $00000020

SCRIPTTEXT_ISPERSISTENT = $00000040

SCRIPTTEXT_ISVISIBLE = $00000002

SCRIPTTHREADID_ALL = TScriptThreadId(-3)

SCRIPTTHREADID_BASE = TScriptThreadId(-2)

SCRIPTTHREADID_CURRENT = TScriptThreadId(-1)

Note: these SCRIPTTHREADID constants were originally macros in the first version of this file. See the note at the top for more information. (Thanks to Gary Warren King.

SCRIPTTYPELIB_ALL_FLAGS = (SCRIPTTYPELIB_ISCONTROL or SCRIPTTYPELIB_ISPERSISTENT)

SCRIPTTYPELIB_ISCONTROL = $00000010

IActiveScript::AddTypeLib() input flags

SCRIPTTYPELIB_ISPERSISTENT = $00000040


Variables