// Copyright (c) 1999 Microsoft Corporation. All rights reserved. // // Declaration of CAudioVBScriptEngine. // // CAudioVBScriptEngine is an ActiveX scripting engine that supports a carefully chosen subset of the VBScript language. // It's goal in life is to be as small and fast as possible and to run on every platform that ports DirectMusic. #pragma once #include "activscp.h" #include "engdisp.h" const GUID CLSID_DirectMusicAudioVBScript = { 0x4ee17959, 0x931e, 0x49e4, { 0xa2, 0xc6, 0x97, 0x7e, 0xcf, 0x36, 0x28, 0xf3 } }; // {4EE17959-931E-49e4-A2C6-977ECF3628F3} class CAudioVBScriptEngine : public IActiveScript, public IActiveScriptParse { public: static HRESULT CreateInstance(IUnknown* pUnknownOuter, const IID& iid, void** ppv); // IUnknown STDMETHOD(QueryInterface)(const IID &iid, void **ppv); STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)(); // IActiveScript HRESULT STDMETHODCALLTYPE SetScriptSite( /* [in] */ IActiveScriptSite __RPC_FAR *pass); HRESULT STDMETHODCALLTYPE GetScriptSite( /* [in] */ REFIID riid, /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE SetScriptState( /* [in] */ SCRIPTSTATE ss) { return S_OK; } HRESULT STDMETHODCALLTYPE GetScriptState( /* [out] */ SCRIPTSTATE __RPC_FAR *pssState) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE Close(void); HRESULT STDMETHODCALLTYPE AddNamedItem( /* [in] */ LPCOLESTR pstrName, /* [in] */ DWORD dwFlags); HRESULT STDMETHODCALLTYPE AddTypeLib( /* [in] */ REFGUID rguidTypeLib, /* [in] */ DWORD dwMajor, /* [in] */ DWORD dwMinor, /* [in] */ DWORD dwFlags) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE GetScriptDispatch( /* [in] */ LPCOLESTR pstrItemName, /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppdisp); HRESULT STDMETHODCALLTYPE GetCurrentScriptThreadID( /* [out] */ SCRIPTTHREADID __RPC_FAR *pstidThread) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE GetScriptThreadID( /* [in] */ DWORD dwWin32ThreadId, /* [out] */ SCRIPTTHREADID __RPC_FAR *pstidThread) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE GetScriptThreadState( /* [in] */ SCRIPTTHREADID stidThread, /* [out] */ SCRIPTTHREADSTATE __RPC_FAR *pstsState) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE InterruptScriptThread( /* [in] */ SCRIPTTHREADID stidThread, /* [in] */ const EXCEPINFO __RPC_FAR *pexcepinfo, /* [in] */ DWORD dwFlags) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE Clone( /* [out] */ IActiveScript __RPC_FAR *__RPC_FAR *ppscript) { return E_NOTIMPL; } // IActiveScriptParse HRESULT STDMETHODCALLTYPE InitNew(void) { return S_OK; } HRESULT STDMETHODCALLTYPE AddScriptlet( /* [in] */ LPCOLESTR pstrDefaultName, /* [in] */ LPCOLESTR pstrCode, /* [in] */ LPCOLESTR pstrItemName, /* [in] */ LPCOLESTR pstrSubItemName, /* [in] */ LPCOLESTR pstrEventName, /* [in] */ LPCOLESTR pstrDelimiter, /* [in] */ DWORD_PTR dwSourceContextCookie, /* [in] */ ULONG ulStartingLineNumber, /* [in] */ DWORD dwFlags, /* [out] */ BSTR __RPC_FAR *pbstrName, /* [out] */ EXCEPINFO __RPC_FAR *pexcepinfo) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE ParseScriptText( /* [in] */ LPCOLESTR pstrCode, /* [in] */ LPCOLESTR pstrItemName, /* [in] */ IUnknown __RPC_FAR *punkContext, /* [in] */ LPCOLESTR pstrDelimiter, /* [in] */ DWORD_PTR dwSourceContextCookie, /* [in] */ ULONG ulStartingLineNumber, /* [in] */ DWORD dwFlags, /* [out] */ VARIANT __RPC_FAR *pvarResult, /* [out] */ EXCEPINFO __RPC_FAR *pexcepinfo); private: // Methods CAudioVBScriptEngine(); // Data long m_cRef; SmartRef::ComPtr m_scomActiveScriptSite; SmartRef::ComPtr m_scomEngineDispatch; Script m_script; SmartRef::ComPtr m_scomGlobalDispatch; };